ext_io_opts uses the size member to allow backwards compatibility however currently we only check if it is below or equal the current size of the opts struct and that it is not 0. size is only used when we copy opts because of split or push/pull. This patch introduces size checks to allow safe access to e.g. metadata and memory domain pointers of the user provided opts pointer. The minimum size of the struct passed is now the size of the initial version of spdk_bdev_ext_io_opts. To not introduce additional checks when opts are consumed by a bdev module we now always copy if the size is smaller than the current opts struct size. When introducing new members to opts additional checks might be needed if those are directly accessed through the passed pointer or bdev_io->internal.ext_opts. Change-Id: Ibd181a5840a3d5022018a9f61403df961ffd6e1d Signed-off-by: Jonas Pfefferle <pepperjo@japf.ch> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12550 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> 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: Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
||
---|---|---|
.. | ||
bdev_ut.c | ||
Makefile |