Michael S. Tsirkin
2022-Mar-16 08:56 UTC
[PATCH v4 08/11] vdpa: Use helper for safer setting of driver_override
On Sat, Mar 12, 2022 at 02:28:53PM +0100, Krzysztof Kozlowski wrote:> Use a helper to set driver_override to reduce amount of duplicated code. > > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at canonical.com>Acked-by: Michael S. Tsirkin <mst at redhat.com> feel free to merge with the rest of the patchset.> --- > drivers/vdpa/vdpa.c | 29 ++++------------------------- > include/linux/vdpa.h | 4 +++- > 2 files changed, 7 insertions(+), 26 deletions(-) > > diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c > index 1ea525433a5c..2dabed1df35c 100644 > --- a/drivers/vdpa/vdpa.c > +++ b/drivers/vdpa/vdpa.c > @@ -77,32 +77,11 @@ static ssize_t driver_override_store(struct device *dev, > const char *buf, size_t count) > { > struct vdpa_device *vdev = dev_to_vdpa(dev); > - const char *driver_override, *old; > - char *cp; > + int ret; > > - /* We need to keep extra room for a newline */ > - if (count >= (PAGE_SIZE - 1)) > - return -EINVAL; > - > - driver_override = kstrndup(buf, count, GFP_KERNEL); > - if (!driver_override) > - return -ENOMEM; > - > - cp = strchr(driver_override, '\n'); > - if (cp) > - *cp = '\0'; > - > - device_lock(dev); > - old = vdev->driver_override; > - if (strlen(driver_override)) { > - vdev->driver_override = driver_override; > - } else { > - kfree(driver_override); > - vdev->driver_override = NULL; > - } > - device_unlock(dev); > - > - kfree(old); > + ret = driver_set_override(dev, &vdev->driver_override, buf, count); > + if (ret) > + return ret; > > return count; > } > diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h > index 721089bb4c84..37117404660e 100644 > --- a/include/linux/vdpa.h > +++ b/include/linux/vdpa.h > @@ -64,7 +64,9 @@ struct vdpa_mgmt_dev; > * struct vdpa_device - representation of a vDPA device > * @dev: underlying device > * @dma_dev: the actual device that is performing DMA > - * @driver_override: driver name to force a match > + * @driver_override: driver name to force a match; do not set directly, > + * because core frees it; use driver_set_override() to > + * set or clear it. > * @config: the configuration ops for this device. > * @cf_mutex: Protects get and set access to configuration layout. > * @index: device index > -- > 2.32.0