* Re: [PATCH v4 08/11] vdpa: Use helper for safer setting of driver_override
[not found] ` <20220312132856.65163-9-krzysztof.kozlowski@canonical.com>
@ 2022-03-13 0:18 ` Michael S. Tsirkin
2022-03-16 8:56 ` Michael S. Tsirkin
1 sibling, 0 replies; 5+ messages in thread
From: Michael S. Tsirkin @ 2022-03-13 0:18 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: linux-hyperv, Stuart Yoder, Rafael J. Wysocki, linux-pci,
linux-remoteproc, alsa-devel, Bjorn Andersson,
Srinivas Kandagatla, Vineeth Vijayan, Alexander Gordeev,
Fabio Estevam, linux-clk, linux-s390, Wei Liu, Stephen Hemminger,
Abel Vesa, Dexuan Cui, Linus Torvalds, Andy Gross, NXP Linux Team,
Heiko Carstens, Vasily Gorbik, linux-arm-msm, Sascha Hauer,
linux-spi, Mark Brown, Rasmus Villemoes, Bjorn Helgaas,
virtualization, linux-arm-kernel, Laurentiu Tudor,
Mathieu Poirier, Greg Kroah-Hartman, Haiyang Zhang,
Peter Oberparleiter, linux-kernel, Sven Schnelle, Shawn Guo
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@canonical.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> 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
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 11/11] rpmsg: Fix kfree() of static memory on setting driver_override
[not found] ` <20220312132856.65163-12-krzysztof.kozlowski@canonical.com>
@ 2022-03-13 16:35 ` Bjorn Andersson
0 siblings, 0 replies; 5+ messages in thread
From: Bjorn Andersson @ 2022-03-13 16:35 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: linux-hyperv, Stuart Yoder, Rafael J. Wysocki, linux-pci,
linux-remoteproc, alsa-devel, linux-kernel, Srinivas Kandagatla,
Vineeth Vijayan, Alexander Gordeev, Fabio Estevam, linux-clk,
linux-s390, Wei Liu, Stephen Hemminger, Abel Vesa,
Michael S. Tsirkin, Dexuan Cui, Linus Torvalds, Andy Gross,
NXP Linux Team, Heiko Carstens, Vasily Gorbik, linux-arm-msm,
Sascha Hauer, Mark Brown, Rasmus Villemoes, Bjorn Helgaas,
virtualization, linux-arm-kernel, Laurentiu Tudor,
Mathieu Poirier, Greg Kroah-Hartman, Haiyang Zhang,
Peter Oberparleiter, stable, linux-spi, Sven Schnelle, Shawn Guo
On Sat 12 Mar 07:28 CST 2022, Krzysztof Kozlowski wrote:
> The driver_override field from platform driver should not be initialized
> from static memory (string literal) because the core later kfree() it,
> for example when driver_override is set via sysfs.
>
> Use dedicated helper to set driver_override properly.
>
> Fixes: 950a7388f02b ("rpmsg: Turn name service into a stand alone driver")
> Fixes: c0cdc19f84a4 ("rpmsg: Driver for user space endpoint interface")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Regards,
Bjorn
> ---
> drivers/rpmsg/rpmsg_core.c | 3 ++-
> drivers/rpmsg/rpmsg_internal.h | 13 +++++++++++--
> drivers/rpmsg/rpmsg_ns.c | 14 ++++++++++++--
> include/linux/rpmsg.h | 6 ++++--
> 4 files changed, 29 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/rpmsg/rpmsg_core.c b/drivers/rpmsg/rpmsg_core.c
> index d9e612f4f0f2..6e2bf2742973 100644
> --- a/drivers/rpmsg/rpmsg_core.c
> +++ b/drivers/rpmsg/rpmsg_core.c
> @@ -397,7 +397,8 @@ field##_store(struct device *dev, struct device_attribute *attr, \
> const char *buf, size_t sz) \
> { \
> struct rpmsg_device *rpdev = to_rpmsg_device(dev); \
> - char *new, *old; \
> + const char *old; \
> + char *new; \
> \
> new = kstrndup(buf, sz, GFP_KERNEL); \
> if (!new) \
> diff --git a/drivers/rpmsg/rpmsg_internal.h b/drivers/rpmsg/rpmsg_internal.h
> index b1245d3ed7c6..31345d6e9a7e 100644
> --- a/drivers/rpmsg/rpmsg_internal.h
> +++ b/drivers/rpmsg/rpmsg_internal.h
> @@ -92,10 +92,19 @@ int rpmsg_release_channel(struct rpmsg_device *rpdev,
> */
> static inline int rpmsg_chrdev_register_device(struct rpmsg_device *rpdev)
> {
> + int ret;
> +
> strcpy(rpdev->id.name, "rpmsg_chrdev");
> - rpdev->driver_override = "rpmsg_chrdev";
> + ret = driver_set_override(&rpdev->dev, &rpdev->driver_override,
> + "rpmsg_chrdev", strlen("rpmsg_chrdev"));
> + if (ret)
> + return ret;
> +
> + ret = rpmsg_register_device(rpdev);
> + if (ret)
> + kfree(rpdev->driver_override);
>
> - return rpmsg_register_device(rpdev);
> + return ret;
> }
>
> #endif
> diff --git a/drivers/rpmsg/rpmsg_ns.c b/drivers/rpmsg/rpmsg_ns.c
> index 762ff1ae279f..95a51543f5ad 100644
> --- a/drivers/rpmsg/rpmsg_ns.c
> +++ b/drivers/rpmsg/rpmsg_ns.c
> @@ -20,12 +20,22 @@
> */
> int rpmsg_ns_register_device(struct rpmsg_device *rpdev)
> {
> + int ret;
> +
> strcpy(rpdev->id.name, "rpmsg_ns");
> - rpdev->driver_override = "rpmsg_ns";
> + ret = driver_set_override(&rpdev->dev, &rpdev->driver_override,
> + "rpmsg_ns", strlen("rpmsg_ns"));
> + if (ret)
> + return ret;
> +
> rpdev->src = RPMSG_NS_ADDR;
> rpdev->dst = RPMSG_NS_ADDR;
>
> - return rpmsg_register_device(rpdev);
> + ret = rpmsg_register_device(rpdev);
> + if (ret)
> + kfree(rpdev->driver_override);
> +
> + return ret;
> }
> EXPORT_SYMBOL(rpmsg_ns_register_device);
>
> diff --git a/include/linux/rpmsg.h b/include/linux/rpmsg.h
> index 02fa9116cd60..20c8cd1cde21 100644
> --- a/include/linux/rpmsg.h
> +++ b/include/linux/rpmsg.h
> @@ -41,7 +41,9 @@ struct rpmsg_channel_info {
> * rpmsg_device - device that belong to the rpmsg bus
> * @dev: the device struct
> * @id: device id (used to match between rpmsg drivers and devices)
> - * @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.
> * @src: local address
> * @dst: destination address
> * @ept: the rpmsg endpoint of this channel
> @@ -51,7 +53,7 @@ struct rpmsg_channel_info {
> struct rpmsg_device {
> struct device dev;
> struct rpmsg_device_id id;
> - char *driver_override;
> + const char *driver_override;
> u32 src;
> u32 dst;
> struct rpmsg_endpoint *ept;
> --
> 2.32.0
>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 01/11] driver: platform: Add helper for safer setting of driver_override
[not found] ` <20220312132856.65163-2-krzysztof.kozlowski@canonical.com>
@ 2022-03-15 17:59 ` Andy Shevchenko
0 siblings, 0 replies; 5+ messages in thread
From: Andy Shevchenko @ 2022-03-15 17:59 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Linux on Hyper-V List, Stuart Yoder, Rafael J. Wysocki, linux-pci,
linux-remoteproc, ALSA Development Mailing List, Bjorn Andersson,
Srinivas Kandagatla, Vineeth Vijayan, Alexander Gordeev,
Fabio Estevam, linux-clk, linux-s390, Wei Liu, Stephen Hemminger,
Abel Vesa, Michael S. Tsirkin, Dexuan Cui, Linus Torvalds,
Andy Gross, NXP Linux Team, Heiko Carstens, Vasily Gorbik,
linux-arm-msm, Sascha Hauer, linux-spi, Mark Brown,
Rasmus Villemoes, Bjorn Helgaas, virtualization,
linux-arm Mailing List, Laurentiu Tudor, Mathieu Poirier,
Greg Kroah-Hartman, Haiyang Zhang, Peter Oberparleiter,
Linux Kernel Mailing List, Sven Schnelle, Shawn Guo
On Sat, Mar 12, 2022 at 5:16 PM Krzysztof Kozlowski
<krzysztof.kozlowski@canonical.com> wrote:
>
> Several core drivers and buses expect that driver_override is a
> dynamically allocated memory thus later they can kfree() it.
>
> However such assumption is not documented, there were in the past and
> there are already users setting it to a string literal. This leads to
> kfree() of static memory during device release (e.g. in error paths or
> during unbind):
>
> kernel BUG at ../mm/slub.c:3960!
> Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
> ...
> (kfree) from [<c058da50>] (platform_device_release+0x88/0xb4)
> (platform_device_release) from [<c0585be0>] (device_release+0x2c/0x90)
> (device_release) from [<c0a69050>] (kobject_put+0xec/0x20c)
> (kobject_put) from [<c0f2f120>] (exynos5_clk_probe+0x154/0x18c)
> (exynos5_clk_probe) from [<c058de70>] (platform_drv_probe+0x6c/0xa4)
> (platform_drv_probe) from [<c058b7ac>] (really_probe+0x280/0x414)
> (really_probe) from [<c058baf4>] (driver_probe_device+0x78/0x1c4)
> (driver_probe_device) from [<c0589854>] (bus_for_each_drv+0x74/0xb8)
> (bus_for_each_drv) from [<c058b48c>] (__device_attach+0xd4/0x16c)
> (__device_attach) from [<c058a638>] (bus_probe_device+0x88/0x90)
> (bus_probe_device) from [<c05871fc>] (device_add+0x3dc/0x62c)
> (device_add) from [<c075ff10>] (of_platform_device_create_pdata+0x94/0xbc)
> (of_platform_device_create_pdata) from [<c07600ec>] (of_platform_bus_create+0x1a8/0x4fc)
> (of_platform_bus_create) from [<c0760150>] (of_platform_bus_create+0x20c/0x4fc)
> (of_platform_bus_create) from [<c07605f0>] (of_platform_populate+0x84/0x118)
> (of_platform_populate) from [<c0f3c964>] (of_platform_default_populate_init+0xa0/0xb8)
> (of_platform_default_populate_init) from [<c01031f8>] (do_one_initcall+0x8c/0x404)
> (do_one_initcall) from [<c0f012c0>] (kernel_init_freeable+0x3d0/0x4d8)
> (kernel_init_freeable) from [<c0a7def0>] (kernel_init+0x8/0x114)
> (kernel_init) from [<c01010b4>] (ret_from_fork+0x14/0x20)
I believe you may remove these three.
> Provide a helper which clearly documents the usage of driver_override.
> This will allow later to reuse the helper and reduce amount of
the amount
> duplicated code.
> Convert the platform driver to use new helper and make the
a new
> driver_override field const char (it is not modified by the core).
...
> +/**
> + * driver_set_override() - Helper to set or clear driver override.
> + * @dev: Device to change
> + * @override: Address of string to change (e.g. &device->driver_override);
> + * The contents will be freed and hold newly allocated override.
> + * @s: NUL terminated string, new driver name to force a match, pass empty
NUL-terminated? (44 vs 115 occurrences)
> + * string to clear it
> + * @len: length of @s
> + *
> + * Helper to set or clear driver override in a device, intended for the cases
> + * when the driver_override field is allocated by driver/bus code.
> + *
> + * Returns: 0 on success or a negative error code on failure.
> + */
> +int driver_set_override(struct device *dev, const char **override,
> + const char *s, size_t len)
> +{
> + const char *new, *old;
> + char *cp;
> +
> + if (!dev || !override || !s)
> + return -EINVAL;
> +
> + /*
> + * The stored value will be used in sysfs show callback (sysfs_emit()),
> + * which has a length limit of PAGE_SIZE and adds a trailing newline.
> + * Thus we can store one character less to avoid truncation during sysfs
> + * show.
> + */
> + if (len >= (PAGE_SIZE - 1))
> + return -EINVAL;
> +
> + new = kstrndup(s, len, GFP_KERNEL);
> + if (!new)
> + return -ENOMEM;
> +
> + cp = strchr(new, '\n');
> + if (cp)
> + *cp = '\0';
AFAIU you may reduce memory footprint by
cp = strnchr(new, len, '\n');
if (cp)
len = s - cp;
new = kstrndup(...);
> + device_lock(dev);
> + old = *override;
> + if (cp != new) {
> + *override = new;
> + } else {
> + kfree(new);
> + *override = NULL;
> + }
> + device_unlock(dev);
> +
> + kfree(old);
> +
> + return 0;
> +}
--
With Best Regards,
Andy Shevchenko
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 05/11] PCI: Use driver_set_override() instead of open-coding
[not found] ` <20220312132856.65163-6-krzysztof.kozlowski@canonical.com>
@ 2022-03-15 18:01 ` Andy Shevchenko
0 siblings, 0 replies; 5+ messages in thread
From: Andy Shevchenko @ 2022-03-15 18:01 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Linux on Hyper-V List, Stuart Yoder, Rafael J. Wysocki, linux-pci,
linux-remoteproc, ALSA Development Mailing List, Bjorn Andersson,
Srinivas Kandagatla, Vineeth Vijayan, Alexander Gordeev,
Fabio Estevam, linux-clk, linux-s390, Wei Liu, Stephen Hemminger,
Abel Vesa, Michael S. Tsirkin, Dexuan Cui, Linus Torvalds,
Andy Gross, NXP Linux Team, Heiko Carstens, Vasily Gorbik,
linux-arm-msm, Sascha Hauer, linux-spi, Mark Brown,
Rasmus Villemoes, Bjorn Helgaas, virtualization,
linux-arm Mailing List, Laurentiu Tudor, Mathieu Poirier,
Greg Kroah-Hartman, Haiyang Zhang, Peter Oberparleiter,
Linux Kernel Mailing List, Sven Schnelle, Shawn Guo
On Sat, Mar 12, 2022 at 4:09 PM Krzysztof Kozlowski
<krzysztof.kozlowski@canonical.com> wrote:
>
> Use a helper to set driver_override to reduce amount of duplicated code.
the amount
> Make the driver_override field const char, because it is not modified by
> the core and it matches other subsystems.
Seems like mine #4 here
https://gist.github.com/andy-shev/a2cb1ee4767d6d2f5d20db53ecb9aabc :-)
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Thanks!
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> ---
> drivers/pci/pci-sysfs.c | 28 ++++------------------------
> include/linux/pci.h | 6 +++++-
> 2 files changed, 9 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
> index 602f0fb0b007..5c42965c32c2 100644
> --- a/drivers/pci/pci-sysfs.c
> +++ b/drivers/pci/pci-sysfs.c
> @@ -567,31 +567,11 @@ static ssize_t driver_override_store(struct device *dev,
> const char *buf, size_t count)
> {
> struct pci_dev *pdev = to_pci_dev(dev);
> - char *driver_override, *old, *cp;
> -
> - /* 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 = pdev->driver_override;
> - if (strlen(driver_override)) {
> - pdev->driver_override = driver_override;
> - } else {
> - kfree(driver_override);
> - pdev->driver_override = NULL;
> - }
> - device_unlock(dev);
> + int ret;
>
> - kfree(old);
> + ret = driver_set_override(dev, &pdev->driver_override, buf, count);
> + if (ret)
> + return ret;
>
> return count;
> }
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 60d423d8f0c4..415491fb85f4 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -516,7 +516,11 @@ struct pci_dev {
> u16 acs_cap; /* ACS Capability offset */
> phys_addr_t rom; /* Physical address if not from BAR */
> size_t romlen; /* Length if not from BAR */
> - char *driver_override; /* Driver name to force a match */
> + /*
> + * Driver name to force a match. Do not set directly, because core
> + * frees it. Use driver_set_override() to set or clear it.
> + */
> + const char *driver_override;
>
> unsigned long priv_flags; /* Private flags for the PCI driver */
>
> --
> 2.32.0
>
--
With Best Regards,
Andy Shevchenko
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 08/11] vdpa: Use helper for safer setting of driver_override
[not found] ` <20220312132856.65163-9-krzysztof.kozlowski@canonical.com>
2022-03-13 0:18 ` [PATCH v4 08/11] vdpa: Use helper for safer setting of driver_override Michael S. Tsirkin
@ 2022-03-16 8:56 ` Michael S. Tsirkin
1 sibling, 0 replies; 5+ messages in thread
From: Michael S. Tsirkin @ 2022-03-16 8:56 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: linux-hyperv, Stuart Yoder, Rafael J. Wysocki, linux-pci,
linux-remoteproc, alsa-devel, Bjorn Andersson,
Srinivas Kandagatla, Vineeth Vijayan, Alexander Gordeev,
Fabio Estevam, linux-clk, linux-s390, Wei Liu, Stephen Hemminger,
Abel Vesa, Dexuan Cui, Linus Torvalds, Andy Gross, NXP Linux Team,
Heiko Carstens, Vasily Gorbik, linux-arm-msm, Sascha Hauer,
linux-spi, Mark Brown, Rasmus Villemoes, Bjorn Helgaas,
virtualization, linux-arm-kernel, Laurentiu Tudor,
Mathieu Poirier, Greg Kroah-Hartman, Haiyang Zhang,
Peter Oberparleiter, linux-kernel, Sven Schnelle, Shawn Guo
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@canonical.com>
Acked-by: Michael S. Tsirkin <mst@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
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-03-16 8:57 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20220312132856.65163-1-krzysztof.kozlowski@canonical.com>
[not found] ` <20220312132856.65163-9-krzysztof.kozlowski@canonical.com>
2022-03-13 0:18 ` [PATCH v4 08/11] vdpa: Use helper for safer setting of driver_override Michael S. Tsirkin
2022-03-16 8:56 ` Michael S. Tsirkin
[not found] ` <20220312132856.65163-12-krzysztof.kozlowski@canonical.com>
2022-03-13 16:35 ` [PATCH v4 11/11] rpmsg: Fix kfree() of static memory on setting driver_override Bjorn Andersson
[not found] ` <20220312132856.65163-2-krzysztof.kozlowski@canonical.com>
2022-03-15 17:59 ` [PATCH v4 01/11] driver: platform: Add helper for safer setting of driver_override Andy Shevchenko
[not found] ` <20220312132856.65163-6-krzysztof.kozlowski@canonical.com>
2022-03-15 18:01 ` [PATCH v4 05/11] PCI: Use driver_set_override() instead of open-coding Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).