]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
objtool, Input: cyapa - Remove undefined behavior in cyapa_update_fw_store()
authorJosh Poimboeuf <jpoimboe@kernel.org>
Mon, 24 Mar 2025 21:56:08 +0000 (14:56 -0700)
committerIngo Molnar <mingo@kernel.org>
Tue, 25 Mar 2025 22:00:15 +0000 (23:00 +0100)
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/
drivers/input/mouse/cyapa.c

index 2f2d925a55d7a5c83166bbd8116c8c1984bb8acc..00c87c0532a60f872f561fd1012ff052ee7d0526 100644 (file)
@@ -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;
        }