Spdk/lib
Tomasz Zawadzki cebf307b61 json_config: do not assume JSON contains 'params' field
Not all JSON methods require 'params' field to be supplied.
Verification of the JSON is done on server side in
parse_single_request().

We should not attempt to process garbage values on correct
JSON config file during app start.

Segfault can be observed if following valid JSON config is supplied:
{
	"method": "framework_wait_init"
}
Resulting in:
json_config.c:388:13: runtime error: applying non-zero offset 18446744073709551600 to null pointer
AddressSanitizer:DEADLYSIGNAL
=================================================================
==3386067==ERROR: AddressSanitizer: SEGV on unknown address (pc 0x0000007260ff bp 0x7ffe6ea06890 sp 0x7ffe6ea067e0 T0)
==3386067==The signal is caused by a READ memory access.
==3386067==Hint: this fault was caused by a dereference of a high value address (see register values below).  Dissassemble the provided pc to learn which register was used.
    #0 0x7260ff in app_json_config_load_subsystem_config_entry /home/tzawadzk/spdk/lib/event/json_config.c:391
    #1 0x7cbb13 in msg_queue_run_batch /home/tzawadzk/spdk/lib/thread/thread.c:505
    #2 0x7cd00a in thread_poll /home/tzawadzk/spdk/lib/thread/thread.c:581
    #3 0x7cfe18 in spdk_thread_poll /home/tzawadzk/spdk/lib/thread/thread.c:689
    #4 0x71d6ef in _reactor_run /home/tzawadzk/spdk/lib/event/reactor.c:326
    #5 0x71eb00 in reactor_run /home/tzawadzk/spdk/lib/event/reactor.c:382
    #6 0x71f911 in spdk_reactors_start /home/tzawadzk/spdk/lib/event/reactor.c:477
    #7 0x718237 in spdk_app_start /home/tzawadzk/spdk/lib/event/app.c:691
    #8 0x407e94 in main /home/tzawadzk/spdk/app/spdk_tgt/spdk_tgt.c:120
    #9 0x7f0f2eef2041 in __libc_start_main ../csu/libc-start.c:308
    #10 0x4079ad in _start (/home/tzawadzk/spdk/build/bin/spdk_tgt+0x4079ad)

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I7ef1a764467817ad788fdf5dbe17eaeb99dcc22e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3256
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-07-31 08:23:53 +00:00
..
accel accel: add API to cancel a batch sequence 2020-07-27 22:43:40 +00:00
bdev bdev: add allowlist to bdev layer 2020-07-07 07:31:22 +00:00
blob blob: Add a bitmask for quickly checking which blobs are open 2020-07-07 07:30:58 +00:00
blobfs lib: add checks for return code of pthread_spin_init 2020-07-23 07:25:21 +00:00
conf lib/conf: allow multiple sections with same name 2020-07-22 12:24:08 +00:00
env_dpdk env: Rename pci_device_rte_hotremove to pci_device_rte_dev_event 2020-07-30 08:43:06 +00:00
env_ocf lib/ocf_env: fix incorrect value for free memory estimate 2020-04-29 06:42:33 +00:00
event json_config: do not assume JSON contains 'params' field 2020-07-31 08:23:53 +00:00
ftl lib: add checks for return code of pthread_spin_init 2020-07-23 07:25:21 +00:00
idxd accel: add API to cancel a batch sequence 2020-07-27 22:43:40 +00:00
ioat lib/ioat: Update the major SO version for libspdk_ioat.so 2020-07-24 07:25:47 +00:00
iscsi lib/iscsi: Put bits NAND or OR together. 2020-07-30 08:43:00 +00:00
json lib: json-nbd remove spdk prefix from static functions. 2020-05-21 09:19:00 +00:00
jsonrpc lib: add checks for return code of pthread_spin_init 2020-07-23 07:25:21 +00:00
log lib/log: add a check for localtime() failure 2020-07-15 07:09:19 +00:00
log_rpc lib: json-nbd remove spdk prefix from static functions. 2020-05-21 09:19:00 +00:00
lvol all: Fix warnings found by gcc 9.3.0 and 9.3.1 2020-06-02 09:51:57 +00:00
nbd nbd: Make nbd_poll return real busy/idle status 2020-07-08 07:54:38 +00:00
net lib: net, notify, nvme, rocksdb remove spdk_ prefix. 2020-05-21 09:19:00 +00:00
notify lib: net, notify, nvme, rocksdb remove spdk_ prefix. 2020-05-21 09:19:00 +00:00
nvme lib/nvme: don't submit request if qpair is disconnected. 2020-07-31 08:23:44 +00:00
nvmf nvmf: add aqa property rsvd bits validation 2020-07-31 08:23:30 +00:00
rdma rdma: Add new API spdk_rdma_qp_accept 2020-06-18 07:28:04 +00:00
reduce mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
rocksdb rocksdb: call spdk_app_stop before exit the process 2020-07-31 08:21:10 +00:00
rpc RPC: update the error message for current RPC state 2020-07-31 08:21:37 +00:00
rte_vhost read_fd_message: distinguish prints of log message 2020-05-25 09:08:00 +00:00
scsi pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
sock sock: Add sock_impl option to disable zero copy on send 2020-07-24 00:30:45 +00:00
thread thread: add info logs 2020-06-12 15:40:31 +00:00
trace mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
ut_mock mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
util lib/util: remove _spdk prefix from functions. 2020-06-01 13:07:30 +00:00
vhost vhost-blk: add resize bdev support 2020-07-29 08:05:31 +00:00
virtio virtio: fix virtio hw double free issue 2020-07-30 08:43:23 +00:00
vmd env_dpdk/pci: remove device detach callback 2020-07-23 20:48:47 +00:00
Makefile rdma: Intorduce RDMA providers 2020-05-20 12:03:50 +00:00