• Kees Cook's avatar
    um: virt-pci: Avoid GCC non-NULL warning · bdc77507
    Kees Cook authored
    GCC gets confused about the return value of get_cpu_var() possibly
    being NULL, so explicitly test for it before calls to memcpy() and
    memset(). Avoids warnings like this:
    
       arch/um/drivers/virt-pci.c: In function 'um_pci_send_cmd':
       include/linux/fortify-string.h:48:33: warning: argument 1 null where non-null expected [-Wnonnull]
          48 | #define __underlying_memcpy     __builtin_memcpy
             |                                 ^
       include/linux/fortify-string.h:438:9: note: in expansion of macro '__underlying_memcpy'
         438 |         __underlying_##op(p, q, __fortify_size);                        \
             |         ^~~~~~~~~~~~~
       include/linux/fortify-string.h:483:26: note: in expansion of macro '__fortify_memcpy_chk'
         483 | #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
             |                          ^~~~~~~~~~~~~~~~~~~~
       arch/um/drivers/virt-pci.c:100:9: note: in expansion of macro 'memcpy'
         100 |         memcpy(buf, cmd, cmd_size);
             |         ^~~~~~
    
    While at it, avoid literal "8" and use stored sizeof(buf->data) in
    memset() and um_pci_send_cmd().
    Reported-by: default avatarkernel test robot <lkp@intel.com>
    Link: https://lore.kernel.org/lkml/202211271212.SUZSC9f9-lkp@intel.com
    Fixes: ba38961a ("um: Enable FORTIFY_SOURCE")
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Xiu Jianfeng <xiujianfeng@huawei.com>
    Cc: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Cc: linux-um@lists.infradead.org
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    bdc77507
virt-pci.c 20.6 KB