On Tue, May 30, 2023 at 11:37?AM Sheng Zhao <sheng.zhao at bytedance.com>
wrote:>
> Syzkaller hits a kernel WARN when the first character of the dev name
> provided is NULL. Solution is to add a NULL check before calling
> cdev_device_add() in vduse_create_dev().
>
> kobject: (0000000072042169): attempted to be registered with empty name!
> WARNING: CPU: 0 PID: 112695 at lib/kobject.c:236
> Call Trace:
> kobject_add_varg linux/src/lib/kobject.c:390 [inline]
> kobject_add+0xf6/0x150 linux/src/lib/kobject.c:442
> device_add+0x28f/0xc20 linux/src/drivers/base/core.c:2167
> cdev_device_add+0x83/0xc0 linux/src/fs/char_dev.c:546
> vduse_create_dev linux/src/drivers/vdpa/vdpa_user/vduse_dev.c:2254
[inline]
> vduse_ioctl+0x7b5/0xf30 linux/src/drivers/vdpa/vdpa_user/vduse_dev.c:2316
> vfs_ioctl linux/src/fs/ioctl.c:47 [inline]
> file_ioctl linux/src/fs/ioctl.c:510 [inline]
> do_vfs_ioctl+0x14b/0xa80 linux/src/fs/ioctl.c:697
> ksys_ioctl+0x7c/0xa0 linux/src/fs/ioctl.c:714
> __do_sys_ioctl linux/src/fs/ioctl.c:721 [inline]
> __se_sys_ioctl linux/src/fs/ioctl.c:719 [inline]
> __x64_sys_ioctl+0x42/0x50 linux/src/fs/ioctl.c:719
> do_syscall_64+0x94/0x330 linux/src/arch/x86/entry/common.c:291
> entry_SYSCALL_64_after_hwframe+0x44/0xa9
>
> Reported-by: Xianjun Zeng <zengxianjun at bytedance.com>
> Signed-off-by: Sheng Zhao <sheng.zhao at bytedance.com>
Acked-by: Jason Wang <jasowang at redhat.com>
Thanks
> ---
> drivers/vdpa/vdpa_user/vduse_dev.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c
b/drivers/vdpa/vdpa_user/vduse_dev.c
> index de97e38c3b82..5f5c21674fdc 100644
> --- a/drivers/vdpa/vdpa_user/vduse_dev.c
> +++ b/drivers/vdpa/vdpa_user/vduse_dev.c
> @@ -1685,6 +1685,9 @@ static bool vduse_validate_config(struct
vduse_dev_config *config)
> if (config->vq_num > 0xffff)
> return false;
>
> + if (!config->name[0])
> + return false;
> +
> if (!device_is_allowed(config->device_id))
> return false;
>
> --
> 2.20.1
>