acpi/nfit: improve bounds checking for 'func'
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 25 Feb 2020 16:20:06 +0000 (19:20 +0300)
committerDan Williams <dan.j.williams@intel.com>
Sat, 29 Feb 2020 02:21:52 +0000 (18:21 -0800)
commit01091c496f920e634ea84b689f480c39016752a8
treed099cc67c80a8977c3e8fbe729b51667effa4534
parentc0e71d602053e4e7637e4bc7d0bc9603ea77a33f
acpi/nfit: improve bounds checking for 'func'

The 'func' variable can come from the user in the __nd_ioctl().  If it's
too high then the (1 << func) shift in acpi_nfit_clear_to_send() is
undefined.  In acpi_nfit_ctl() we pass 'func' to test_bit(func, &dsm_mask)
which could result in an out of bounds access.

To fix these issues, I introduced the NVDIMM_CMD_MAX (31) define and
updated nfit_dsm_revid() to use that define as well instead of magic
numbers.

Fixes: 11189c1089da ("acpi/nfit: Fix command-supported detection")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Link: https://lore.kernel.org/r/20200225161927.hvftuq7kjn547fyj@kili.mountain
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/acpi/nfit/core.c
drivers/acpi/nfit/nfit.h