Re: [PATCH v5 01/11] firmware: raspberrypi: Keep count of all consumers
On Mon, Nov 23, 2020 at 7:38 PM Nicolas Saenz Julienne wrote: > > When unbinding the firmware device we need to make sure it has no > consumers left. Otherwise we'd leave them with a firmware handle > pointing at freed memory. > > Keep a reference count of all consumers and introduce rpi_firmware_put() > which will permit automatically decrease the reference count upon > unbinding consumer drivers. > > Suggested-by: Uwe Kleine-König > Signed-off-by: Nicolas Saenz Julienne > --- > > Changes since v3: > - Use kref instead of waiting on refcount > > drivers/firmware/raspberrypi.c | 37 +++--- > include/soc/bcm2835/raspberrypi-firmware.h | 2 ++ > 2 files changed, 35 insertions(+), 4 deletions(-) > > diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c > index 30259dc9b805..ed793aef7851 100644 > --- a/drivers/firmware/raspberrypi.c > +++ b/drivers/firmware/raspberrypi.c > @@ -7,6 +7,7 @@ > */ > > #include > +#include > #include > #include > #include > @@ -27,6 +28,8 @@ struct rpi_firmware { > struct mbox_chan *chan; /* The property channel. */ > struct completion c; > u32 enabled; > + > + struct kref consumers; > }; > > static DEFINE_MUTEX(transaction_lock); > @@ -225,12 +228,27 @@ static void rpi_register_clk_driver(struct device *dev) > -1, NULL, 0); > } > > +static void rpi_firmware_delete(struct kref *kref) > +{ > + struct rpi_firmware *fw = container_of(kref, struct rpi_firmware, > + consumers); > + > + mbox_free_channel(fw->chan); > + kfree(fw); > +} > + > +void rpi_firmware_put(struct rpi_firmware *fw) > +{ > + kref_put(&fw->consumers, rpi_firmware_delete); > +} > +EXPORT_SYMBOL_GPL(rpi_firmware_put); > + > static int rpi_firmware_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > struct rpi_firmware *fw; > > - fw = devm_kzalloc(dev, sizeof(*fw), GFP_KERNEL); One nit from my side: maybe add a comment here saying that you really want to use non-managed kzalloc() because you're going to get people blindly converting it to devm_kzalloc() very soon. Bartosz > + fw = kzalloc(sizeof(*fw), GFP_KERNEL); > if (!fw) > return -ENOMEM; > > @@ -247,6 +265,7 @@ static int rpi_firmware_probe(struct platform_device > *pdev) > } > > init_completion(&fw->c); > + kref_init(&fw->consumers); > > platform_set_drvdata(pdev, fw); > > @@ -275,25 +294,35 @@ static int rpi_firmware_remove(struct platform_device > *pdev) > rpi_hwmon = NULL; > platform_device_unregister(rpi_clk); > rpi_clk = NULL; > - mbox_free_channel(fw->chan); > + > + rpi_firmware_put(fw); > > return 0; > } > > /** > - * rpi_firmware_get - Get pointer to rpi_firmware structure. > * @firmware_node:Pointer to the firmware Device Tree node. > * > + * The reference to rpi_firmware has to be released with rpi_firmware_put(). > + * > * Returns NULL is the firmware device is not ready. > */ > struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node) > { > struct platform_device *pdev = of_find_device_by_node(firmware_node); > + struct rpi_firmware *fw; > > if (!pdev) > return NULL; > > - return platform_get_drvdata(pdev); > + fw = platform_get_drvdata(pdev); > + if (!fw) > + return NULL; > + > + if (!kref_get_unless_zero(&fw->consumers)) > + return NULL; > + > + return fw; > } > EXPORT_SYMBOL_GPL(rpi_firmware_get); > > diff --git a/include/soc/bcm2835/raspberrypi-firmware.h > b/include/soc/bcm2835/raspberrypi-firmware.h > index cc9cdbc66403..fdfef7fe40df 100644 > --- a/include/soc/bcm2835/raspberrypi-firmware.h > +++ b/include/soc/bcm2835/raspberrypi-firmware.h > @@ -140,6 +140,7 @@ int rpi_firmware_property(struct rpi_firmware *fw, > u32 tag, void *data, size_t len); > int rpi_firmware_property_list(struct rpi_firmware *fw, >void *data, size_t tag_size); > +void rpi_firmware_put(struct rpi_firmware *fw); > struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node); > #else > static inline int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, > @@ -154,6 +155,7 @@ static inline int rpi_firmware_property_list(struct > rpi_firmware *fw, > return -ENOSYS; > } > > +static inline void rpi_firmware_put(struct rpi_firmware *fw) { } > static inline struct rpi_firmware *rpi_firmware_get(struct device_node > *firmware_node) > { > return NULL; > -- > 2.29.2 > ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v5 01/11] firmware: raspberrypi: Keep count of all consumers
On Thu, 2020-12-03 at 09:05 +0100, Bartosz Golaszewski wrote: > On Mon, Nov 23, 2020 at 7:38 PM Nicolas Saenz Julienne > wrote: > > > > When unbinding the firmware device we need to make sure it has no > > consumers left. Otherwise we'd leave them with a firmware handle > > pointing at freed memory. > > > > Keep a reference count of all consumers and introduce rpi_firmware_put() > > which will permit automatically decrease the reference count upon > > unbinding consumer drivers. > > > > Suggested-by: Uwe Kleine-König > > Signed-off-by: Nicolas Saenz Julienne > > --- > > > > Changes since v3: > > - Use kref instead of waiting on refcount > > > > drivers/firmware/raspberrypi.c | 37 +++--- > > include/soc/bcm2835/raspberrypi-firmware.h | 2 ++ > > 2 files changed, 35 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c > > index 30259dc9b805..ed793aef7851 100644 > > --- a/drivers/firmware/raspberrypi.c > > +++ b/drivers/firmware/raspberrypi.c > > @@ -7,6 +7,7 @@ > > */ > > > > #include > > +#include > > #include > > #include > > #include > > @@ -27,6 +28,8 @@ struct rpi_firmware { > > struct mbox_chan *chan; /* The property channel. */ > > struct completion c; > > u32 enabled; > > + > > + struct kref consumers; > > }; > > > > static DEFINE_MUTEX(transaction_lock); > > @@ -225,12 +228,27 @@ static void rpi_register_clk_driver(struct device > > *dev) > > -1, NULL, 0); > > } > > > > +static void rpi_firmware_delete(struct kref *kref) > > +{ > > + struct rpi_firmware *fw = container_of(kref, struct rpi_firmware, > > + consumers); > > + > > + mbox_free_channel(fw->chan); > > + kfree(fw); > > +} > > + > > +void rpi_firmware_put(struct rpi_firmware *fw) > > +{ > > + kref_put(&fw->consumers, rpi_firmware_delete); > > +} > > +EXPORT_SYMBOL_GPL(rpi_firmware_put); > > + > > static int rpi_firmware_probe(struct platform_device *pdev) > > { > > struct device *dev = &pdev->dev; > > struct rpi_firmware *fw; > > > > - fw = devm_kzalloc(dev, sizeof(*fw), GFP_KERNEL); > > One nit from my side: maybe add a comment here saying that you really > want to use non-managed kzalloc() because you're going to get people > blindly converting it to devm_kzalloc() very soon. Good point, I'll change it. Regards, Nicolas signature.asc Description: This is a digitally signed message part ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 07/11] drivers: staging: vc04_services: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to have any practical purpose. For in-tree drivers, the kernel version really matters. OTOH, the module version doesn't seem to be actively maintained - the code received changes while the version remained constant. Signed-off-by: Enrico Weigelt --- drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c index df90c1f9d148..0b20dd51c340 100644 --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c @@ -2011,5 +2011,4 @@ module_platform_driver(bcm2835_camera_driver) MODULE_DESCRIPTION("Broadcom 2835 MMAL video capture"); MODULE_AUTHOR("Vincent Sanders"); MODULE_LICENSE("GPL"); -MODULE_VERSION(BM2835_MMAL_VERSION); MODULE_ALIAS("platform:bcm2835-camera"); -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 11/11] drivers: staging: rtl8723bs: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to serve any practical purpose. The driver received lots of changes, but module remained constant since it landed in mainline, several years ago. Signed-off-by: Enrico Weigelt --- drivers/staging/rtl8723bs/os_dep/os_intfs.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/rtl8723bs/os_dep/os_intfs.c b/drivers/staging/rtl8723bs/os_dep/os_intfs.c index 27f990a01a23..0a94bab4fdcb 100644 --- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c +++ b/drivers/staging/rtl8723bs/os_dep/os_intfs.c @@ -13,7 +13,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Realtek Wireless Lan Driver"); MODULE_AUTHOR("Realtek Semiconductor Corp."); -MODULE_VERSION(DRIVERVERSION); /* module param defaults */ static int rtw_chip_version; -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 05/11] drivers: staging: media: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to serve any practical purpose. For in-tree drivers, the kernel version matters. The code received lots of changes, but module version remained constant, since the driver landed in mainline. So, this version doesn't seem have any practical meaning anymore. Signed-off-by: Enrico Weigelt --- drivers/staging/media/omap4iss/iss.c | 1 - drivers/staging/media/omap4iss/iss_video.h | 1 - 2 files changed, 2 deletions(-) diff --git a/drivers/staging/media/omap4iss/iss.c b/drivers/staging/media/omap4iss/iss.c index e06ea7ea1e50..dae9073e7d3c 100644 --- a/drivers/staging/media/omap4iss/iss.c +++ b/drivers/staging/media/omap4iss/iss.c @@ -1349,4 +1349,3 @@ module_platform_driver(iss_driver); MODULE_DESCRIPTION("TI OMAP4 ISS driver"); MODULE_AUTHOR("Sergio Aguirre "); MODULE_LICENSE("GPL"); -MODULE_VERSION(ISS_VIDEO_DRIVER_VERSION); diff --git a/drivers/staging/media/omap4iss/iss_video.h b/drivers/staging/media/omap4iss/iss_video.h index 8b3dd92021e1..526281bf0051 100644 --- a/drivers/staging/media/omap4iss/iss_video.h +++ b/drivers/staging/media/omap4iss/iss_video.h @@ -18,7 +18,6 @@ #include #define ISS_VIDEO_DRIVER_NAME "issvideo" -#define ISS_VIDEO_DRIVER_VERSION "0.0.2" struct iss_device; struct iss_video; -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 02/11] drivers: staging: gasket: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to serve any practical purpose. For in-tree drivers, the kernel version matters. The code has received lots of changes, w/o the versions being actively maintained, so it doesn't seem to have much practical meaning. Signed-off-by: Enrico Weigelt --- drivers/staging/gasket/apex_driver.c | 1 - drivers/staging/gasket/gasket_core.c | 1 - 2 files changed, 2 deletions(-) diff --git a/drivers/staging/gasket/apex_driver.c b/drivers/staging/gasket/apex_driver.c index f12f81c8dd2f..66ae99bebfd8 100644 --- a/drivers/staging/gasket/apex_driver.c +++ b/drivers/staging/gasket/apex_driver.c @@ -718,7 +718,6 @@ static void apex_exit(void) gasket_unregister_device(&apex_desc); } MODULE_DESCRIPTION("Google Apex driver"); -MODULE_VERSION(APEX_DRIVER_VERSION); MODULE_LICENSE("GPL v2"); MODULE_AUTHOR("John Joseph "); MODULE_DEVICE_TABLE(pci, apex_pci_ids); diff --git a/drivers/staging/gasket/gasket_core.c b/drivers/staging/gasket/gasket_core.c index 28dab302183b..763d5ea45e68 100644 --- a/drivers/staging/gasket/gasket_core.c +++ b/drivers/staging/gasket/gasket_core.c @@ -1809,7 +1809,6 @@ static int __init gasket_init(void) } MODULE_DESCRIPTION("Google Gasket driver framework"); -MODULE_VERSION(GASKET_FRAMEWORK_VERSION); MODULE_LICENSE("GPL v2"); MODULE_AUTHOR("Rob Springer "); module_init(gasket_init); -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 01/11] drivers: staging: speakup: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to serve any practical purpose. For in-tree drivers, the kernel version matters. The drivers have received lots of changes, without the module version (or the underlying DRV_VERSION macro) ever changed, since the code landed in the kernel tree. So, it doesn't seem to have any practical meaning anymore. Signed-off-by: Enrico Weigelt --- drivers/accessibility/speakup/main.c | 1 - drivers/accessibility/speakup/speakup_acntpc.c | 1 - drivers/accessibility/speakup/speakup_acntsa.c | 1 - drivers/accessibility/speakup/speakup_apollo.c | 2 -- drivers/accessibility/speakup/speakup_audptr.c | 2 -- drivers/accessibility/speakup/speakup_bns.c| 2 -- drivers/accessibility/speakup/speakup_decext.c | 1 - drivers/accessibility/speakup/speakup_decpc.c | 1 - drivers/accessibility/speakup/speakup_dectlk.c | 1 - drivers/accessibility/speakup/speakup_dtlk.c | 2 -- drivers/accessibility/speakup/speakup_dummy.c | 2 -- drivers/accessibility/speakup/speakup_keypc.c | 1 - drivers/accessibility/speakup/speakup_ltlk.c | 2 -- drivers/accessibility/speakup/speakup_soft.c | 1 - drivers/accessibility/speakup/speakup_spkout.c | 2 -- drivers/accessibility/speakup/speakup_txprt.c | 2 -- 16 files changed, 24 deletions(-) diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c index 48019660a096..d512f4775ae1 100644 --- a/drivers/accessibility/speakup/main.c +++ b/drivers/accessibility/speakup/main.c @@ -46,7 +46,6 @@ MODULE_AUTHOR("Kirk Reiser "); MODULE_AUTHOR("Daniel Drake "); MODULE_DESCRIPTION("Speakup console speech"); MODULE_LICENSE("GPL"); -MODULE_VERSION(SPEAKUP_VERSION); char *synth_name; module_param_named(synth, synth_name, charp, 0444); diff --git a/drivers/accessibility/speakup/speakup_acntpc.c b/drivers/accessibility/speakup/speakup_acntpc.c index c94328a5bd4a..4d9ebf8b3460 100644 --- a/drivers/accessibility/speakup/speakup_acntpc.c +++ b/drivers/accessibility/speakup/speakup_acntpc.c @@ -315,5 +315,4 @@ MODULE_AUTHOR("Kirk Reiser "); MODULE_AUTHOR("David Borowski"); MODULE_DESCRIPTION("Speakup support for Accent PC synthesizer"); MODULE_LICENSE("GPL"); -MODULE_VERSION(DRV_VERSION); diff --git a/drivers/accessibility/speakup/speakup_acntsa.c b/drivers/accessibility/speakup/speakup_acntsa.c index 3a863dc61286..1dc2fd99043f 100644 --- a/drivers/accessibility/speakup/speakup_acntsa.c +++ b/drivers/accessibility/speakup/speakup_acntsa.c @@ -140,5 +140,4 @@ MODULE_AUTHOR("Kirk Reiser "); MODULE_AUTHOR("David Borowski"); MODULE_DESCRIPTION("Speakup support for Accent SA synthesizer"); MODULE_LICENSE("GPL"); -MODULE_VERSION(DRV_VERSION); diff --git a/drivers/accessibility/speakup/speakup_apollo.c b/drivers/accessibility/speakup/speakup_apollo.c index 0877b4044c28..ce215fb3f7ff 100644 --- a/drivers/accessibility/speakup/speakup_apollo.c +++ b/drivers/accessibility/speakup/speakup_apollo.c @@ -204,5 +204,3 @@ MODULE_AUTHOR("Kirk Reiser "); MODULE_AUTHOR("David Borowski"); MODULE_DESCRIPTION("Speakup support for Apollo II synthesizer"); MODULE_LICENSE("GPL"); -MODULE_VERSION(DRV_VERSION); - diff --git a/drivers/accessibility/speakup/speakup_audptr.c b/drivers/accessibility/speakup/speakup_audptr.c index e6a6a9665d8f..e4733215b5a9 100644 --- a/drivers/accessibility/speakup/speakup_audptr.c +++ b/drivers/accessibility/speakup/speakup_audptr.c @@ -167,5 +167,3 @@ MODULE_AUTHOR("Kirk Reiser "); MODULE_AUTHOR("David Borowski"); MODULE_DESCRIPTION("Speakup support for Audapter synthesizer"); MODULE_LICENSE("GPL"); -MODULE_VERSION(DRV_VERSION); - diff --git a/drivers/accessibility/speakup/speakup_bns.c b/drivers/accessibility/speakup/speakup_bns.c index 76dfa3f7c058..6783b007c020 100644 --- a/drivers/accessibility/speakup/speakup_bns.c +++ b/drivers/accessibility/speakup/speakup_bns.c @@ -124,5 +124,3 @@ MODULE_AUTHOR("Kirk Reiser "); MODULE_AUTHOR("David Borowski"); MODULE_DESCRIPTION("Speakup support for Braille 'n Speak synthesizers"); MODULE_LICENSE("GPL"); -MODULE_VERSION(DRV_VERSION); - diff --git a/drivers/accessibility/speakup/speakup_decext.c b/drivers/accessibility/speakup/speakup_decext.c index 7408eb29cf38..efe7ccbfbf05 100644 --- a/drivers/accessibility/speakup/speakup_decext.c +++ b/drivers/accessibility/speakup/speakup_decext.c @@ -236,5 +236,4 @@ MODULE_AUTHOR("Kirk Reiser "); MODULE_AUTHOR("David Borowski"); MODULE_DESCRIPTION("Speakup support for DECtalk External synthesizers"); MODULE_LICENSE("GPL"); -MODULE_VERSION(DRV_VERSION); diff --git a/drivers/accessibility/speakup/speakup_decpc.c b/drivers/accessibility/speakup/speakup_decpc.c index 96f24c848cc5..60da9ec9949c 100644 --- a/drivers/accessibility/speakup/speakup_decpc.c +++ b/drivers/accessibility/speakup/speakup_decpc.c @@ -492,4 +492,3 @@ MODULE_AUTHOR("Kirk Reiser "); MODULE_AUTHOR("David Borowski"); MODULE_DESCRIPTION("Speakup support for DECtalk PC synthesizers"); MODULE_LICENSE("GPL"); -MODULE_VERSION(DRV
[PATCH 08/11] drivers: staging: rtl8188eu: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to serve any practical purpose. For in-kernel drivers, the kernel version matters most. The driver received lots of changes, while module version remained constant, since it landed in mainline, back 7 years ago. Signed-off-by: Enrico Weigelt --- drivers/staging/rtl8188eu/os_dep/os_intfs.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/rtl8188eu/os_dep/os_intfs.c b/drivers/staging/rtl8188eu/os_dep/os_intfs.c index e291df87f620..258d7a13467a 100644 --- a/drivers/staging/rtl8188eu/os_dep/os_intfs.c +++ b/drivers/staging/rtl8188eu/os_dep/os_intfs.c @@ -18,7 +18,6 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Realtek Wireless Lan Driver"); MODULE_AUTHOR("Realtek Semiconductor Corp."); -MODULE_VERSION(DRIVERVERSION); MODULE_FIRMWARE("rtlwifi/rtl8188eufw.bin"); #define RTW_NOTCH_FILTER 0 /* 0:Disable, 1:Enable, */ -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 09/11] drivers: staging: rtl8192e: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to have any practical purpose: the driver has received lots of changes, while the module version remained constant. Unmaintained version numbers aren't actually useful. Signed-off-by: Enrico Weigelt --- drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c index 663675efcfe4..e316f920657b 100644 --- a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c +++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c @@ -2635,7 +2635,6 @@ void rtl92e_check_rfctrl_gpio_timer(struct timer_list *t) ***/ MODULE_DESCRIPTION("Linux driver for Realtek RTL819x WiFi cards"); MODULE_AUTHOR(DRV_COPYRIGHT " " DRV_AUTHOR); -MODULE_VERSION(DRV_VERSION); MODULE_LICENSE("GPL"); MODULE_FIRMWARE(RTL8192E_BOOT_IMG_FW); MODULE_FIRMWARE(RTL8192E_MAIN_IMG_FW); -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 10/11] drivers: staging: rtl8723bs: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to have any pratical purpose. The code received lots of huge changes, but module version remained constant, since it landed in mainline tree, back 11 years go. Unmaintained version numbers aren't actually useful. For in-tree drivers, the kernel version really matters. Signed-off-by: Enrico Weigelt --- drivers/staging/rtl8192u/r8192U_core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/rtl8192u/r8192U_core.c b/drivers/staging/rtl8192u/r8192U_core.c index 27dc181c4c9b..da871f45042a 100644 --- a/drivers/staging/rtl8192u/r8192U_core.c +++ b/drivers/staging/rtl8192u/r8192U_core.c @@ -90,7 +90,6 @@ static const struct usb_device_id rtl8192_usb_id_tbl[] = { }; MODULE_LICENSE("GPL"); -MODULE_VERSION("V 1.1"); MODULE_DEVICE_TABLE(usb, rtl8192_usb_id_tbl); MODULE_DESCRIPTION("Linux driver for Realtek RTL8192 USB WiFi cards"); -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 03/11] drivers: staging: gdm724x: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to serve any practical purpose. For in-kernel drivers, the kernel version matters. And the code has received lots of changes, without the version ever been touched (remained constant since landing in the mainline tree), so it doesn't seem to have any practical meaning anymore. Signed-off-by: Enrico Weigelt --- drivers/staging/gdm724x/gdm_lte.h | 1 - drivers/staging/gdm724x/gdm_usb.c | 1 - 2 files changed, 2 deletions(-) diff --git a/drivers/staging/gdm724x/gdm_lte.h b/drivers/staging/gdm724x/gdm_lte.h index f2143a6e0e99..bf6478ab05dd 100644 --- a/drivers/staging/gdm724x/gdm_lte.h +++ b/drivers/staging/gdm724x/gdm_lte.h @@ -11,7 +11,6 @@ #define MAX_NIC_TYPE 4 #define MAX_RX_SUBMIT_COUNT3 -#define DRIVER_VERSION "3.7.17.0" enum TX_ERROR_CODE { TX_NO_ERROR = 0, diff --git a/drivers/staging/gdm724x/gdm_usb.c b/drivers/staging/gdm724x/gdm_usb.c index dc4da66c3695..aa6f08396396 100644 --- a/drivers/staging/gdm724x/gdm_usb.c +++ b/drivers/staging/gdm724x/gdm_usb.c @@ -1003,6 +1003,5 @@ static void __exit gdm_usb_lte_exit(void) module_init(gdm_usb_lte_init); module_exit(gdm_usb_lte_exit); -MODULE_VERSION(DRIVER_VERSION); MODULE_DESCRIPTION("GCT LTE USB Device Driver"); MODULE_LICENSE("GPL"); -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 04/11] drivers: staging: goldfish: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to have much practical purpose. For in-kernel drivers, the kernel version matters. The driver received lots of changes, but version number has remained the same since it's introducing into mainline, seven years ago. So, it doesn't seem to have much practical meaning anymore. Signed-off-by: Enrico Weigelt --- drivers/staging/goldfish/goldfish_audio.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/goldfish/goldfish_audio.c b/drivers/staging/goldfish/goldfish_audio.c index 0c65a0121dde..4a23f40e549a 100644 --- a/drivers/staging/goldfish/goldfish_audio.c +++ b/drivers/staging/goldfish/goldfish_audio.c @@ -24,7 +24,6 @@ MODULE_AUTHOR("Google, Inc."); MODULE_DESCRIPTION("Android QEMU Audio Driver"); MODULE_LICENSE("GPL"); -MODULE_VERSION("1.0"); struct goldfish_audio { char __iomem *reg_base; -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 06/11] drivers: staging: qlge: remove unneeded MODULE_VERSION() call
Remove MODULE_VERSION(), as it doesn't seem to serve any practical purpose. For in-tree drivers, the kernel version really matters. The module version doesn't seem to be maintained and having much practical meaning anymore. Signed-off-by: Enrico Weigelt --- drivers/staging/qlge/qlge_main.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/qlge/qlge_main.c b/drivers/staging/qlge/qlge_main.c index 27da386f9d87..a98ee325ff32 100644 --- a/drivers/staging/qlge/qlge_main.c +++ b/drivers/staging/qlge/qlge_main.c @@ -49,7 +49,6 @@ const char qlge_driver_version[] = DRV_VERSION; MODULE_AUTHOR("Ron Mercer "); MODULE_DESCRIPTION(DRV_STRING " "); MODULE_LICENSE("GPL"); -MODULE_VERSION(DRV_VERSION); static const u32 default_msg = NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK | -- 2.11.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 01/11] drivers: staging: speakup: remove unneeded MODULE_VERSION() call
On Thu, Dec 03, 2020 at 01:47:53PM +0100, Enrico Weigelt, metux IT consult wrote: > Remove MODULE_VERSION(), as it doesn't seem to serve any practical > purpose. For in-tree drivers, the kernel version matters. > > The drivers have received lots of changes, without the module version > (or the underlying DRV_VERSION macro) ever changed, since the code > landed in the kernel tree. So, it doesn't seem to have any practical > meaning anymore. > > Signed-off-by: Enrico Weigelt > --- > drivers/accessibility/speakup/main.c | 1 - Yous subject line is odd, these are not "staging" drivers anymore, so why do you say they are there? thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH AUTOSEL 4.14 8/9] soc: fsl: dpio: Get the cpumask through cpumask_of(cpu)
From: Hao Si [ Upstream commit 2663b3388551230cbc4606a40fabf3331ceb59e4 ] The local variable 'cpumask_t mask' is in the stack memory, and its address is assigned to 'desc->affinity' in 'irq_set_affinity_hint()'. But the memory area where this variable is located is at risk of being modified. During LTP testing, the following error was generated: Unable to handle kernel paging request at virtual address 12e9b790 Mem abort info: ESR = 0x9607 Exception class = DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 Data abort info: ISV = 0, ISS = 0x0007 CM = 0, WnR = 0 swapper pgtable: 4k pages, 48-bit VAs, pgdp = 75ac5e07 [12e9b790] pgd=0027dbffe003, pud=0027dbffd003, pmd=0027b6d61003, pte= Internal error: Oops: 9607 [#1] PREEMPT SMP Modules linked in: xt_conntrack Process read_all (pid: 20171, stack limit = 0x44ea4095) CPU: 14 PID: 20171 Comm: read_all Tainted: GB W Hardware name: NXP Layerscape LX2160ARDB (DT) pstate: 8085 (Nzcv daIf -PAN -UAO) pc : irq_affinity_hint_proc_show+0x54/0xb0 lr : irq_affinity_hint_proc_show+0x4c/0xb0 sp : 1138bc10 x29: 1138bc10 x28: d131d1e0 x27: 007000c0 x26: 8025b9480dc0 x25: 8025b9480da8 x24: 03ff x23: 8027334f8300 x22: 80272e97d000 x21: 80272e97d0b0 x20: 8025b9480d80 x19: 09a49000 x18: x17: x16: x15: x14: x13: x12: 0040 x11: x10: 802735b79b88 x9 : x8 : x7 : 09a49848 x6 : 0003 x5 : x4 : 08157d6c x3 : 1138bc10 x2 : 12e9b790 x1 : x0 : Call trace: irq_affinity_hint_proc_show+0x54/0xb0 seq_read+0x1b0/0x440 proc_reg_read+0x80/0xd8 __vfs_read+0x60/0x178 vfs_read+0x94/0x150 ksys_read+0x74/0xf0 __arm64_sys_read+0x24/0x30 el0_svc_common.constprop.0+0xd8/0x1a0 el0_svc_handler+0x34/0x88 el0_svc+0x10/0x14 Code: f9001bbf 943e0732 f94066c2 b462 (f9400041) ---[ end trace b495bdcb0b3b732b ]--- Kernel panic - not syncing: Fatal exception SMP: stopping secondary CPUs SMP: failed to stop secondary CPUs 0,2-4,6,8,11,13-15 Kernel Offset: disabled CPU features: 0x0,21006008 Memory Limit: none ---[ end Kernel panic - not syncing: Fatal exception ]--- Fix it by using 'cpumask_of(cpu)' to get the cpumask. Signed-off-by: Hao Si Signed-off-by: Lin Chen Signed-off-by: Yi Wang Signed-off-by: Li Yang Signed-off-by: Sasha Levin --- drivers/staging/fsl-mc/bus/dpio/dpio-driver.c | 5 + 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/staging/fsl-mc/bus/dpio/dpio-driver.c b/drivers/staging/fsl-mc/bus/dpio/dpio-driver.c index e36da20a2796b..e7856a9e685f4 100644 --- a/drivers/staging/fsl-mc/bus/dpio/dpio-driver.c +++ b/drivers/staging/fsl-mc/bus/dpio/dpio-driver.c @@ -77,7 +77,6 @@ static int register_dpio_irq_handlers(struct fsl_mc_device *dpio_dev, int cpu) struct dpio_priv *priv; int error; struct fsl_mc_device_irq *irq; - cpumask_t mask; priv = dev_get_drvdata(&dpio_dev->dev); @@ -96,9 +95,7 @@ static int register_dpio_irq_handlers(struct fsl_mc_device *dpio_dev, int cpu) } /* set the affinity hint */ - cpumask_clear(&mask); - cpumask_set_cpu(cpu, &mask); - if (irq_set_affinity_hint(irq->msi_desc->irq, &mask)) + if (irq_set_affinity_hint(irq->msi_desc->irq, cpumask_of(cpu))) dev_err(&dpio_dev->dev, "irq_set_affinity failed irq %d cpu %d\n", irq->msi_desc->irq, cpu); -- 2.27.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 01/11] drivers: staging: speakup: remove unneeded MODULE_VERSION() call
On Thu, Dec 03, 2020 at 02:25:15PM +0100, Greg KH wrote: > On Thu, Dec 03, 2020 at 01:47:53PM +0100, Enrico Weigelt, metux IT consult > wrote: > > Remove MODULE_VERSION(), as it doesn't seem to serve any practical > > purpose. For in-tree drivers, the kernel version matters. > > > > The drivers have received lots of changes, without the module version > > (or the underlying DRV_VERSION macro) ever changed, since the code > > landed in the kernel tree. So, it doesn't seem to have any practical > > meaning anymore. > > > > Signed-off-by: Enrico Weigelt > > --- > > drivers/accessibility/speakup/main.c | 1 - > > > > Yous subject line is odd, these are not "staging" drivers anymore, so > why do you say they are there? Also putting "drivers:" in the subject always seems superfluous. regards, dan carpenter ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v5 08/11] input: raspberrypi-ts: Release firmware handle when not needed
On Tue, 2020-12-01 at 22:03 -0800, Dmitry Torokhov wrote: > Hi Nicolas, > > On Mon, Nov 23, 2020 at 07:38:29PM +0100, Nicolas Saenz Julienne wrote: > > Use devm_rpi_firmware_get() so as to make sure we release RPi's firmware > > interface when unbinding the device. > > I do not believe this comment is correct any longer. Otherwise: > > Acked-by: Dmitry Torokhov Yes, sorry for that. I'll update it. Regards, Nicolas signature.asc Description: This is a digitally signed message part ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v3 3/6] ARM: dts: sun8i: v3s: Add node for system control
Hello. On Thu, 3 Dec 2020, Chen-Yu Tsai wrote: Hi, On Mon, Nov 16, 2020 at 8:57 PM Martin Cerveny wrote: Allwinner V3s has system control and SRAM C1 region similar to H3. Signed-off-by: Martin Cerveny --- arch/arm/boot/dts/sun8i-v3s.dtsi | 14 ++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/sun8i-v3s.dtsi b/arch/arm/boot/dts/sun8i-v3s.dtsi index 0c7341676921..70193512c222 100644 --- a/arch/arm/boot/dts/sun8i-v3s.dtsi +++ b/arch/arm/boot/dts/sun8i-v3s.dtsi @@ -161,6 +161,20 @@ syscon: system-control@1c0 { #address-cells = <1>; #size-cells = <1>; ranges; + + sram_c: sram@1d0 { + compatible = "mmio-sram"; + reg = <0x01d0 0x8>; How was this address derived? Did you check that there is actually SRAM here? Yes, I did some checking (mmap). But I repeated measurement and found mirrored regions: - SRAM_C is mirrored from 0x_4000 (primary location) to 0x01d0_4000 (size 0xb000) (probably exact size is 0xb0c0) - rest of 0x01d0_ are discontinuously filled with R/W register sets (probably some internals registers from VE) that I thought to be SRAM too - register SRAM_CTRL_REG0==0x01c00_ (value 0x7fff_) switch whole region 0x01d0_-0x01df_ __AND__ 0x_4000-0x_ - VE/cedrus code use this regions indirectly (VE_AVC_SRAM_PORT_OFFSET/VE_AVC_SRAM_PORT_DATA...) and it is not influenced by "true" SRAM mapping or size -> so I suppose to better use only SRAM_C lower definition: --- diff --git a/arch/arm/boot/dts/sun8i-v3s.dtsi b/arch/arm/boot/dts/sun8i-v3s.dtsi index e8f304125e2d..90d703e5b73b 100644 --- a/arch/arm/boot/dts/sun8i-v3s.dtsi +++ b/arch/arm/boot/dts/sun8i-v3s.dtsi @@ -162,17 +162,17 @@ syscon: system-control@1c0 { #size-cells = <1>; ranges; - sram_c: sram@1d0 { + sram_c: sram@4000 { compatible = "mmio-sram"; - reg = <0x01d0 0x8>; + reg = <0x4000 0xb000>; #address-cells = <1>; #size-cells = <1>; - ranges = <0 0x01d0 0x8>; + ranges = <0 0 0x4000 0xb000>; ve_sram: sram-section@0 { compatible = "allwinner,sun8i-v3s-sram-c1", "allwinner,sun4i-a10-sram-c1"; - reg = <0x00 0x8>; + reg = <0x0 0xb000>; }; }; }; --- Does someone have accessible specific documentation of VE/cedrus for V3s ? Regards, Martin ChenYu + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x01d0 0x8>; + + ve_sram: sram-section@0 { + compatible = "allwinner,sun8i-v3s-sram-c1", + "allwinner,sun4i-a10-sram-c1"; + reg = <0x00 0x8>; + }; + }; }; tcon0: lcd-controller@1c0c000 { -- 2.25.1 ___ linux-arm-kernel mailing list linux-arm-ker...@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v3 3/6] ARM: dts: sun8i: v3s: Add node for system control
On Fri, Dec 4, 2020 at 12:25 AM Martin Cerveny wrote: > > Hello. > > On Thu, 3 Dec 2020, Chen-Yu Tsai wrote: > > > Hi, > > > > On Mon, Nov 16, 2020 at 8:57 PM Martin Cerveny > > wrote: > >> > >> Allwinner V3s has system control and SRAM C1 region similar to H3. > >> > >> Signed-off-by: Martin Cerveny > >> --- > >> arch/arm/boot/dts/sun8i-v3s.dtsi | 14 ++ > >> 1 file changed, 14 insertions(+) > >> > >> diff --git a/arch/arm/boot/dts/sun8i-v3s.dtsi > >> b/arch/arm/boot/dts/sun8i-v3s.dtsi > >> index 0c7341676921..70193512c222 100644 > >> --- a/arch/arm/boot/dts/sun8i-v3s.dtsi > >> +++ b/arch/arm/boot/dts/sun8i-v3s.dtsi > >> @@ -161,6 +161,20 @@ syscon: system-control@1c0 { > >> #address-cells = <1>; > >> #size-cells = <1>; > >> ranges; > >> + > >> + sram_c: sram@1d0 { > >> + compatible = "mmio-sram"; > >> + reg = <0x01d0 0x8>; > > > > How was this address derived? Did you check that there is actually SRAM > > here? > > Yes, I did some checking (mmap). But I repeated measurement and found > mirrored regions: > > - SRAM_C is mirrored from 0x_4000 (primary location) to 0x01d0_4000 (size > 0xb000) >(probably exact size is 0xb0c0) > - rest of 0x01d0_ are discontinuously filled with R/W register sets >(probably some internals registers from VE) that I thought to be SRAM too > - register SRAM_CTRL_REG0==0x01c00_ (value 0x7fff_) switch whole >region 0x01d0_-0x01df_ __AND__ 0x_4000-0x_ > - VE/cedrus code use this regions indirectly >(VE_AVC_SRAM_PORT_OFFSET/VE_AVC_SRAM_PORT_DATA...) >and it is not influenced by "true" SRAM mapping or size Could you add this to your commit log? That would make the information available to others, and you could mention that you only added the location that is contiguous SRAM without the interspersed registers. So based on this, and what we've seen with the H616, I'm guessing 0x01d0_ - 0x01df_ exposes all the internal guts of the VE, while SRAM C @ 0x4000 just maps a small portion out. > -> so I suppose to better use only SRAM_C lower definition: Yes that would be more appropriate, as it matches the manual, and as you mentioned, is *real* SRAM. > --- > diff --git a/arch/arm/boot/dts/sun8i-v3s.dtsi > b/arch/arm/boot/dts/sun8i-v3s.dtsi > index e8f304125e2d..90d703e5b73b 100644 > --- a/arch/arm/boot/dts/sun8i-v3s.dtsi > +++ b/arch/arm/boot/dts/sun8i-v3s.dtsi > @@ -162,17 +162,17 @@ syscon: system-control@1c0 { > #size-cells = <1>; > ranges; > > - sram_c: sram@1d0 { > + sram_c: sram@4000 { > compatible = "mmio-sram"; > - reg = <0x01d0 0x8>; > + reg = <0x4000 0xb000>; > #address-cells = <1>; > #size-cells = <1>; > - ranges = <0 0x01d0 0x8>; > + ranges = <0 0 0x4000 0xb000>; > > ve_sram: sram-section@0 { > compatible = > "allwinner,sun8i-v3s-sram-c1", > > "allwinner,sun4i-a10-sram-c1"; > - reg = <0x00 0x8>; > + reg = <0x0 0xb000>; > }; > }; > }; > --- > > Does someone have accessible specific documentation of VE/cedrus for V3s ? I doubt such information exists. Regards ChenYu > Regards, Martin > > > ChenYu > > > >> + #address-cells = <1>; > >> + #size-cells = <1>; > >> + ranges = <0 0x01d0 0x8>; > >> + > >> + ve_sram: sram-section@0 { > >> + compatible = > >> "allwinner,sun8i-v3s-sram-c1", > >> + > >> "allwinner,sun4i-a10-sram-c1"; > >> + reg = <0x00 0x8>; > >> + }; > >> + }; > >> }; > >> > >> tcon0: lcd-controller@1c0c000 { > >> -- > >> 2.25.1 > >> > >> > >> ___ > >> linux-arm-kernel mailing list > >> linux-arm-ker...@lists.infradead.org > >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re.Investment
Good Day I am JABER AL-GHAFRI, Pleasant greetings to you as i seek your indulgence to introduce to you the desire of my principal’s wish, to make huge financial investment in your home country on areas of oil and gas, real estate, tourism and hotel, manufacturing and production company, agriculture, fishing, Mining & Trading of natural resources such as crude oil, coal, graphite, coke, refinery, energy, hospital etc. He needs a capable, trustworthy and understanding business partner, who can confidently handle and manage his investment funds with utmost care of secrecy without traces or link to him as he is politically exposed at the moment in his country. He has a huge available financial portfolio. Please, I will provide more details about the transaction if you are sure you can handle classified information and also let me know your entitlement for the solicited role I shall be expecting your quick reply. E-mail alghafri...@gmail.com Best Regards, JABER AL-GHAFRI -- This email has been checked for viruses by AVG. https://www.avg.com ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: bcm2835: fix vchiq_mmal dependencies
From: Arnd Bergmann When the MMAL code is built-in but the vchiq core config is set to =m, the mmal code never gets built, which in turn can lead to link errors: ERROR: modpost: "vchiq_mmal_port_set_format" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_port_disable" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_port_parameter_set" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_component_finalise" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_port_connect_tunnel" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_component_enable" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_finalise" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_component_init" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_component_disable" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "mmal_vchi_buffer_init" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_port_enable" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_version" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_submit_buffer" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_init" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "mmal_vchi_buffer_cleanup" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! ERROR: modpost: "vchiq_mmal_port_parameter_get" [drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko] undefined! Change the Kconfig to depend on BCM2835_VCHIQ like the other drivers, and remove the now redundant dependencies. Fixes: b18ee53ad297 ("staging: bcm2835: Break MMAL support out from camera") Signed-off-by: Arnd Bergmann --- drivers/staging/vc04_services/vchiq-mmal/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/vc04_services/vchiq-mmal/Kconfig b/drivers/staging/vc04_services/vchiq-mmal/Kconfig index 500c0d12e4ff..c99525a0bb45 100644 --- a/drivers/staging/vc04_services/vchiq-mmal/Kconfig +++ b/drivers/staging/vc04_services/vchiq-mmal/Kconfig @@ -1,6 +1,6 @@ config BCM2835_VCHIQ_MMAL tristate "BCM2835 MMAL VCHIQ service" - depends on (ARCH_BCM2835 || COMPILE_TEST) + depends on BCM2835_VCHIQ help Enables the MMAL API over VCHIQ interface as used for the majority of the multimedia services on VideoCore. -- 2.27.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: greybus: audio: Add missing unlock in gbaudio_dapm_free_controls()
Add the missing unlock before return from function gbaudio_dapm_free_controls() in the error handling case. Fixes: 510e340efe0c ("staging: greybus: audio: Add helper APIs for dynamic audio module") Reported-by: Hulk Robot Signed-off-by: Wang Hai --- drivers/staging/greybus/audio_helper.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/staging/greybus/audio_helper.c b/drivers/staging/greybus/audio_helper.c index 237531ba60f3..293675dbea10 100644 --- a/drivers/staging/greybus/audio_helper.c +++ b/drivers/staging/greybus/audio_helper.c @@ -135,6 +135,7 @@ int gbaudio_dapm_free_controls(struct snd_soc_dapm_context *dapm, if (!w) { dev_err(dapm->dev, "%s: widget not found\n", widget->name); + mutex_unlock(&dapm->card->dapm_mutex); return -EINVAL; } widget++; -- 2.17.1 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel