On Wed, Jul 7, 2021 at 4:53 PM Stefan Hajnoczi <stefanha@xxxxxxxxxx> wrote: > > On Tue, Jun 15, 2021 at 10:13:30PM +0800, Xie Yongji wrote: > > +static bool vduse_validate_config(struct vduse_dev_config *config) > > +{ > > The name field needs to be NUL terminated? > I think so. > > + case VDUSE_CREATE_DEV: { > > + struct vduse_dev_config config; > > + unsigned long size = offsetof(struct vduse_dev_config, config); > > + void *buf; > > + > > + ret = -EFAULT; > > + if (copy_from_user(&config, argp, size)) > > + break; > > + > > + ret = -EINVAL; > > + if (vduse_validate_config(&config) == false) > > + break; > > + > > + buf = vmemdup_user(argp + size, config.config_size); > > + if (IS_ERR(buf)) { > > + ret = PTR_ERR(buf); > > + break; > > + } > > + ret = vduse_create_dev(&config, buf, control->api_version); > > + break; > > + } > > + case VDUSE_DESTROY_DEV: { > > + char name[VDUSE_NAME_MAX]; > > + > > + ret = -EFAULT; > > + if (copy_from_user(name, argp, VDUSE_NAME_MAX)) > > + break; > > Is this missing a NUL terminator? Oh, yes. Looks like I need to set '\0' to name[VDUSE_VDUSE_NAME_MAX - 1] here. Thanks, Yongji