* 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 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
[parent not found: <20220312132856.65163-12-krzysztof.kozlowski@canonical.com>]
* 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
[parent not found: <20220312132856.65163-2-krzysztof.kozlowski@canonical.com>]
* 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
[parent not found: <20220312132856.65163-6-krzysztof.kozlowski@canonical.com>]
* 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
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).