diff options
| author | Josh Poimboeuf <jpoimboe@kernel.org> | 2025-03-24 14:56:08 -0700 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2025-03-25 23:00:15 +0100 |
| commit | 7501153750b47416c9891038330359fad0205839 (patch) | |
| tree | 46cf0e81aed31af017e9923af6d8d7ac2655d049 /drivers/input | |
| parent | 72c774aa9d1e16bfd247096935e7dae194d84929 (diff) | |
| download | linux-7501153750b47416c9891038330359fad0205839.tar.gz linux-7501153750b47416c9891038330359fad0205839.tar.bz2 linux-7501153750b47416c9891038330359fad0205839.zip | |
objtool, Input: cyapa - Remove undefined behavior in cyapa_update_fw_store()
In cyapa_update_fw_store(), if 'count' is zero, the write to
fw_name[count-1] underflows the array.
Presumably that's not possible in normal operation, as its caller
sysfs_kf_write() already checks for zero. Regardless it's a good idea
to check for the error explicitly and avoid undefined behavior.
Fixes the following warning with an UBSAN kernel:
vmlinux.o: warning: objtool: .text.cyapa_update_fw_store: unexpected end of section
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/73ae0bb3c656735890d914b74c9d6bb40c25d3cd.1742852847.git.jpoimboe@kernel.org
Closes: https://lore.kernel.org/oe-kbuild-all/202503171547.LlCTJLQL-lkp@intel.com/
Diffstat (limited to 'drivers/input')
| -rw-r--r-- | drivers/input/mouse/cyapa.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/input/mouse/cyapa.c b/drivers/input/mouse/cyapa.c index 2f2d925a55d7..00c87c0532a6 100644 --- a/drivers/input/mouse/cyapa.c +++ b/drivers/input/mouse/cyapa.c @@ -1080,8 +1080,8 @@ static ssize_t cyapa_update_fw_store(struct device *dev, char fw_name[NAME_MAX]; int ret, error; - if (count >= NAME_MAX) { - dev_err(dev, "File name too long\n"); + if (!count || count >= NAME_MAX) { + dev_err(dev, "Bad file name size\n"); return -EINVAL; } |
