All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Stefan Wahren <stefan.wahren@i2se.com>,
	devel@driverdev.osuosl.org,
	Florian Fainelli <f.fainelli@gmail.com>,
	Scott Branden <sbranden@broadcom.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	stable@vger.kernel.org,
	Sasha Levin <alexander.levin@microsoft.com>,
	Eric Anholt <eric@anholt.net>,
	Michael Zoran <mzoran@crowfest.net>,
	bcm-kernel-feedback-list@broadcom.com,
	linux-rpi-kernel@lists.infradead.org, Ray Jui <rjui@broadcom.com>,
	Kirill Marinushkin <k.marinushkin@gmail.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4.16 090/161] staging: bcm2835-audio: Release resources on module_exit()
Date: Thu, 24 May 2018 11:38:35 +0200	[thread overview]
Message-ID: <20180524093029.222420874@linuxfoundation.org> (raw)
In-Reply-To: <20180524093018.331893860@linuxfoundation.org>

4.16-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Kirill Marinushkin <k.marinushkin@gmail.com>

[ Upstream commit 626118b472d2eb45f83a0276a18d3e6a01c69f6a ]

In the current implementation, `rmmod snd_bcm2835` does not release
resources properly. It causes an oops when trying to list sound devices.

This commit fixes it.

The details WRT allocation / free are described below.

Device structure WRT allocation:

pdev
  \childdev[]
    \card
      \chip
        \pcm
        \ctl

Allocation / register sequence:

* childdev: devm_kzalloc      - freed during driver detach
* childdev: device_initialize - freed during device_unregister
* pdev: devres_alloc          - freed during driver detach
* childdev: device_add        - removed during device_unregister
* pdev, childdev: devres_add  - freed during driver detach
* card: snd_card_new          - freed during snd_card_free
* chip: kzalloc               - freed during kfree
* card, chip: snd_device_new  - freed during snd_device_free
* chip: new_pcm               - TODO: free pcm
* chip: new_ctl               - TODO: free ctl
* card: snd_card_register     - unregistered during snd_card_free

Free / unregister sequence:

* card: snd_card_free
* card, chip: snd_device_free
* childdev: device_unregister
* chip: kfree

Steps to reproduce the issue before this commit:

~~~~
$ rmmod snd_bcm2835
$ aplay -L
[  138.648130] Unable to handle kernel paging request at virtual address 7f1343c0
[  138.660415] pgd = ad8f0000
[  138.665567] [7f1343c0] *pgd=3864c811, *pte=00000000, *ppte=00000000
[  138.674887] Internal error: Oops: 7 [#1] SMP ARM
[  138.683571] Modules linked in: sha256_generic cfg80211 rfkill snd_pcm snd_timer
 snd fixed uio_pdrv_genirq uio ip_tables x_tables ipv6 [last unloaded: snd_bcm2835
]
[  138.706594] CPU: 3 PID: 463 Comm: aplay Tainted: G        WC       4.15.0-rc1-v
7+ #6
[  138.719833] Hardware name: BCM2835
[  138.726016] task: b877ac00 task.stack: aebec000
[  138.733408] PC is at try_module_get+0x38/0x24c
[  138.740813] LR is at snd_ctl_open+0x58/0x194 [snd]
[  138.748485] pc : [<801c4d5c>]    lr : [<7f0e6b2c>]    psr: 20000013
[  138.757709] sp : aebedd60  ip : aebedd88  fp : aebedd84
[  138.765884] r10: 00000000  r9 : 00000004  r8 : 7f0ed440
[  138.774040] r7 : b7e469b0  r6 : 7f0e6b2c  r5 : afd91900  r4 : 7f1343c0
[  138.783571] r3 : aebec000  r2 : 00000001  r1 : b877ac00  r0 : 7f1343c0
[  138.793084] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  138.803300] Control: 10c5387d  Table: 2d8f006a  DAC: 00000055
[  138.812064] Process aplay (pid: 463, stack limit = 0xaebec210)
[  138.820868] Stack: (0xaebedd60 to 0xaebee000)
[  138.828207] dd60: 00000000 b848d000 afd91900 00000000 b7e469b0 7f0ed440 aebedda4 aebedd88
[  138.842371] dd80: 7f0e6b2c 801c4d30 afd91900 7f0ea4dc 00000000 b7e469b0 aebeddcc aebedda8
[  138.856611] dda0: 7f0e250c 7f0e6ae0 7f0e2464 b8478ec0 b7e469b0 afd91900 7f0ea388 00000000
[  138.870864] ddc0: aebeddf4 aebeddd0 802ce590 7f0e2470 8090ab64 afd91900 afd91900 b7e469b0
[  138.885301] dde0: afd91908 802ce4e4 aebede1c aebeddf8 802c57b4 802ce4f0 afd91900 aebedea8
[  138.900110] de00: b7fa4c00 00000000 00000000 00000004 aebede3c aebede20 802c6ba8 802c56b4
[  138.915260] de20: aebedea8 00000000 aebedf5c 00000000 aebedea4 aebede40 802d9a68 802c6b58
[  138.930661] de40: b874ddd0 00000000 00000000 00000001 00000041 00000000 afd91900 aebede70
[  138.946402] de60: 00000000 00000000 00000002 b7e469b0 b8a87610 b8d6ab80 801852f8 00080000
[  138.962314] de80: aebedf5c aebedea8 00000001 80108464 aebec000 00000000 aebedf4c aebedea8
[  138.978414] dea0: 802dacd4 802d970c b8a87610 b8d6ab80 a7982bc6 00000009 af363019 b9231480
[  138.994617] dec0: 00000000 b8c038a0 b7e469b0 00000101 00000002 00000238 00000000 00000000
[  139.010823] dee0: 00000000 aebedee8 00080000 0000000f aebedf3c aebedf00 802ed7e4 80843f94
[  139.027025] df00: 00000003 00080000 b9231490 b9231480 00000000 00080000 af363000 00000000
[  139.043229] df20: 00000005 00000002 ffffff9c 00000000 00080000 ffffff9c af363000 00000003
[  139.059430] df40: aebedf94 aebedf50 802c6f70 802dac70 aebec000 00000000 00000001 00000000
[  139.075629] df60: 00020000 00000004 00000100 00000001 7ebe577c 0002e038 00000000 00000005
[  139.091828] df80: 80108464 aebec000 aebedfa4 aebedf98 802c7060 802c6e6c 00000000 aebedfa8
[  139.108025] dfa0: 801082c0 802c7040 7ebe577c 0002e038 7ebe577c 00080000 00000b98 e81c8400
[  139.124222] dfc0: 7ebe577c 0002e038 00000000 00000005 7ebe57e4 00a20af8 7ebe57f0 76f87394
[  139.140419] dfe0: 00000000 7ebe55c4 76ec88e8 76df1d9c 60000010 7ebe577c 00000000 00000000
[  139.156715] [<801c4d5c>] (try_module_get) from [<7f0e6b2c>] (snd_ctl_open+0x58/0x194 [snd])
[  139.173222] [<7f0e6b2c>] (snd_ctl_open [snd]) from [<7f0e250c>] (snd_open+0xa8/0x14c [snd])
[  139.189683] [<7f0e250c>] (snd_open [snd]) from [<802ce590>] (chrdev_open+0xac/0x188)
[  139.205465] [<802ce590>] (chrdev_open) from [<802c57b4>] (do_dentry_open+0x10c/0x314)
[  139.221347] [<802c57b4>] (do_dentry_open) from [<802c6ba8>] (vfs_open+0x5c/0x88)
[  139.236788] [<802c6ba8>] (vfs_open) from [<802d9a68>] (path_openat+0x368/0x944)
[  139.248270] [<802d9a68>] (path_openat) from [<802dacd4>] (do_filp_open+0x70/0xc4)
[  139.263731] [<802dacd4>] (do_filp_open) from [<802c6f70>] (do_sys_open+0x110/0x1d4)
[  139.279378] [<802c6f70>] (do_sys_open) from [<802c7060>] (SyS_open+0x2c/0x30)
[  139.290647] [<802c7060>] (SyS_open) from [<801082c0>] (ret_fast_syscall+0x0/0x28)
[  139.306021] Code: e3c3303f e5932004 e2822001 e5832004 (e5943000)
[  139.316265] ---[ end trace 7f3f7f6193b663ed ]---
[  139.324956] note: aplay[463] exited with preempt_count 1
~~~~

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Stefan Wahren <stefan.wahren@i2se.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: Ray Jui <rjui@broadcom.com>
Cc: Scott Branden <sbranden@broadcom.com>
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: Michael Zoran <mzoran@crowfest.net>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: linux-rpi-kernel@lists.infradead.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: devel@driverdev.osuosl.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/staging/vc04_services/bcm2835-audio/bcm2835.c |   54 ++++++++----------
 1 file changed, 25 insertions(+), 29 deletions(-)

--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
@@ -25,6 +25,10 @@ MODULE_PARM_DESC(enable_compat_alsa,
 static void snd_devm_unregister_child(struct device *dev, void *res)
 {
 	struct device *childdev = *(struct device **)res;
+	struct bcm2835_chip *chip = dev_get_drvdata(childdev);
+	struct snd_card *card = chip->card;
+
+	snd_card_free(card);
 
 	device_unregister(childdev);
 }
@@ -50,6 +54,13 @@ static int snd_devm_add_child(struct dev
 	return 0;
 }
 
+static void snd_bcm2835_release(struct device *dev)
+{
+	struct bcm2835_chip *chip = dev_get_drvdata(dev);
+
+	kfree(chip);
+}
+
 static struct device *
 snd_create_device(struct device *parent,
 		  struct device_driver *driver,
@@ -65,6 +76,7 @@ snd_create_device(struct device *parent,
 	device_initialize(device);
 	device->parent = parent;
 	device->driver = driver;
+	device->release = snd_bcm2835_release;
 
 	dev_set_name(device, "%s", name);
 
@@ -75,18 +87,19 @@ snd_create_device(struct device *parent,
 	return device;
 }
 
-static int snd_bcm2835_free(struct bcm2835_chip *chip)
-{
-	kfree(chip);
-	return 0;
-}
-
 /* component-destructor
  * (see "Management of Cards and Components")
  */
 static int snd_bcm2835_dev_free(struct snd_device *device)
 {
-	return snd_bcm2835_free(device->device_data);
+	struct bcm2835_chip *chip = device->device_data;
+	struct snd_card *card = chip->card;
+
+	/* TODO: free pcm, ctl */
+
+	snd_device_free(card, chip);
+
+	return 0;
 }
 
 /* chip-specific constructor
@@ -111,7 +124,7 @@ static int snd_bcm2835_create(struct snd
 
 	err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
 	if (err) {
-		snd_bcm2835_free(chip);
+		kfree(chip);
 		return err;
 	}
 
@@ -119,31 +132,14 @@ static int snd_bcm2835_create(struct snd
 	return 0;
 }
 
-static void snd_devm_card_free(struct device *dev, void *res)
+static struct snd_card *snd_bcm2835_card_new(struct device *dev)
 {
-	struct snd_card *snd_card = *(struct snd_card **)res;
-
-	snd_card_free(snd_card);
-}
-
-static struct snd_card *snd_devm_card_new(struct device *dev)
-{
-	struct snd_card **dr;
 	struct snd_card *card;
 	int ret;
 
-	dr = devres_alloc(snd_devm_card_free, sizeof(*dr), GFP_KERNEL);
-	if (!dr)
-		return ERR_PTR(-ENOMEM);
-
 	ret = snd_card_new(dev, -1, NULL, THIS_MODULE, 0, &card);
-	if (ret) {
-		devres_free(dr);
+	if (ret)
 		return ERR_PTR(ret);
-	}
-
-	*dr = card;
-	devres_add(dev, dr);
 
 	return card;
 }
@@ -260,7 +256,7 @@ static int snd_add_child_device(struct d
 		return PTR_ERR(child);
 	}
 
-	card = snd_devm_card_new(child);
+	card = snd_bcm2835_card_new(child);
 	if (IS_ERR(card)) {
 		dev_err(child, "Failed to create card");
 		return PTR_ERR(card);
@@ -302,7 +298,7 @@ static int snd_add_child_device(struct d
 		return err;
 	}
 
-	dev_set_drvdata(child, card);
+	dev_set_drvdata(child, chip);
 	dev_info(child, "card created with %d channels\n", numchans);
 
 	return 0;


_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

WARNING: multiple messages have this Message-ID (diff)
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	Kirill Marinushkin <k.marinushkin@gmail.com>,
	Eric Anholt <eric@anholt.net>,
	Stefan Wahren <stefan.wahren@i2se.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Ray Jui <rjui@broadcom.com>,
	Scott Branden <sbranden@broadcom.com>,
	bcm-kernel-feedback-list@broadcom.com,
	Michael Zoran <mzoran@crowfest.net>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	linux-rpi-kernel@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, devel@driverdev.osuosl.org,
	Sasha Levin <alexander.levin@microsoft.com>
Subject: [PATCH 4.16 090/161] staging: bcm2835-audio: Release resources on module_exit()
Date: Thu, 24 May 2018 11:38:35 +0200	[thread overview]
Message-ID: <20180524093029.222420874@linuxfoundation.org> (raw)
In-Reply-To: <20180524093018.331893860@linuxfoundation.org>

4.16-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Kirill Marinushkin <k.marinushkin@gmail.com>

[ Upstream commit 626118b472d2eb45f83a0276a18d3e6a01c69f6a ]

In the current implementation, `rmmod snd_bcm2835` does not release
resources properly. It causes an oops when trying to list sound devices.

This commit fixes it.

The details WRT allocation / free are described below.

Device structure WRT allocation:

pdev
  \childdev[]
    \card
      \chip
        \pcm
        \ctl

Allocation / register sequence:

* childdev: devm_kzalloc      - freed during driver detach
* childdev: device_initialize - freed during device_unregister
* pdev: devres_alloc          - freed during driver detach
* childdev: device_add        - removed during device_unregister
* pdev, childdev: devres_add  - freed during driver detach
* card: snd_card_new          - freed during snd_card_free
* chip: kzalloc               - freed during kfree
* card, chip: snd_device_new  - freed during snd_device_free
* chip: new_pcm               - TODO: free pcm
* chip: new_ctl               - TODO: free ctl
* card: snd_card_register     - unregistered during snd_card_free

Free / unregister sequence:

* card: snd_card_free
* card, chip: snd_device_free
* childdev: device_unregister
* chip: kfree

Steps to reproduce the issue before this commit:

~~~~
$ rmmod snd_bcm2835
$ aplay -L
[  138.648130] Unable to handle kernel paging request at virtual address 7f1343c0
[  138.660415] pgd = ad8f0000
[  138.665567] [7f1343c0] *pgd=3864c811, *pte=00000000, *ppte=00000000
[  138.674887] Internal error: Oops: 7 [#1] SMP ARM
[  138.683571] Modules linked in: sha256_generic cfg80211 rfkill snd_pcm snd_timer
 snd fixed uio_pdrv_genirq uio ip_tables x_tables ipv6 [last unloaded: snd_bcm2835
]
[  138.706594] CPU: 3 PID: 463 Comm: aplay Tainted: G        WC       4.15.0-rc1-v
7+ #6
[  138.719833] Hardware name: BCM2835
[  138.726016] task: b877ac00 task.stack: aebec000
[  138.733408] PC is at try_module_get+0x38/0x24c
[  138.740813] LR is at snd_ctl_open+0x58/0x194 [snd]
[  138.748485] pc : [<801c4d5c>]    lr : [<7f0e6b2c>]    psr: 20000013
[  138.757709] sp : aebedd60  ip : aebedd88  fp : aebedd84
[  138.765884] r10: 00000000  r9 : 00000004  r8 : 7f0ed440
[  138.774040] r7 : b7e469b0  r6 : 7f0e6b2c  r5 : afd91900  r4 : 7f1343c0
[  138.783571] r3 : aebec000  r2 : 00000001  r1 : b877ac00  r0 : 7f1343c0
[  138.793084] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  138.803300] Control: 10c5387d  Table: 2d8f006a  DAC: 00000055
[  138.812064] Process aplay (pid: 463, stack limit = 0xaebec210)
[  138.820868] Stack: (0xaebedd60 to 0xaebee000)
[  138.828207] dd60: 00000000 b848d000 afd91900 00000000 b7e469b0 7f0ed440 aebedda4 aebedd88
[  138.842371] dd80: 7f0e6b2c 801c4d30 afd91900 7f0ea4dc 00000000 b7e469b0 aebeddcc aebedda8
[  138.856611] dda0: 7f0e250c 7f0e6ae0 7f0e2464 b8478ec0 b7e469b0 afd91900 7f0ea388 00000000
[  138.870864] ddc0: aebeddf4 aebeddd0 802ce590 7f0e2470 8090ab64 afd91900 afd91900 b7e469b0
[  138.885301] dde0: afd91908 802ce4e4 aebede1c aebeddf8 802c57b4 802ce4f0 afd91900 aebedea8
[  138.900110] de00: b7fa4c00 00000000 00000000 00000004 aebede3c aebede20 802c6ba8 802c56b4
[  138.915260] de20: aebedea8 00000000 aebedf5c 00000000 aebedea4 aebede40 802d9a68 802c6b58
[  138.930661] de40: b874ddd0 00000000 00000000 00000001 00000041 00000000 afd91900 aebede70
[  138.946402] de60: 00000000 00000000 00000002 b7e469b0 b8a87610 b8d6ab80 801852f8 00080000
[  138.962314] de80: aebedf5c aebedea8 00000001 80108464 aebec000 00000000 aebedf4c aebedea8
[  138.978414] dea0: 802dacd4 802d970c b8a87610 b8d6ab80 a7982bc6 00000009 af363019 b9231480
[  138.994617] dec0: 00000000 b8c038a0 b7e469b0 00000101 00000002 00000238 00000000 00000000
[  139.010823] dee0: 00000000 aebedee8 00080000 0000000f aebedf3c aebedf00 802ed7e4 80843f94
[  139.027025] df00: 00000003 00080000 b9231490 b9231480 00000000 00080000 af363000 00000000
[  139.043229] df20: 00000005 00000002 ffffff9c 00000000 00080000 ffffff9c af363000 00000003
[  139.059430] df40: aebedf94 aebedf50 802c6f70 802dac70 aebec000 00000000 00000001 00000000
[  139.075629] df60: 00020000 00000004 00000100 00000001 7ebe577c 0002e038 00000000 00000005
[  139.091828] df80: 80108464 aebec000 aebedfa4 aebedf98 802c7060 802c6e6c 00000000 aebedfa8
[  139.108025] dfa0: 801082c0 802c7040 7ebe577c 0002e038 7ebe577c 00080000 00000b98 e81c8400
[  139.124222] dfc0: 7ebe577c 0002e038 00000000 00000005 7ebe57e4 00a20af8 7ebe57f0 76f87394
[  139.140419] dfe0: 00000000 7ebe55c4 76ec88e8 76df1d9c 60000010 7ebe577c 00000000 00000000
[  139.156715] [<801c4d5c>] (try_module_get) from [<7f0e6b2c>] (snd_ctl_open+0x58/0x194 [snd])
[  139.173222] [<7f0e6b2c>] (snd_ctl_open [snd]) from [<7f0e250c>] (snd_open+0xa8/0x14c [snd])
[  139.189683] [<7f0e250c>] (snd_open [snd]) from [<802ce590>] (chrdev_open+0xac/0x188)
[  139.205465] [<802ce590>] (chrdev_open) from [<802c57b4>] (do_dentry_open+0x10c/0x314)
[  139.221347] [<802c57b4>] (do_dentry_open) from [<802c6ba8>] (vfs_open+0x5c/0x88)
[  139.236788] [<802c6ba8>] (vfs_open) from [<802d9a68>] (path_openat+0x368/0x944)
[  139.248270] [<802d9a68>] (path_openat) from [<802dacd4>] (do_filp_open+0x70/0xc4)
[  139.263731] [<802dacd4>] (do_filp_open) from [<802c6f70>] (do_sys_open+0x110/0x1d4)
[  139.279378] [<802c6f70>] (do_sys_open) from [<802c7060>] (SyS_open+0x2c/0x30)
[  139.290647] [<802c7060>] (SyS_open) from [<801082c0>] (ret_fast_syscall+0x0/0x28)
[  139.306021] Code: e3c3303f e5932004 e2822001 e5832004 (e5943000)
[  139.316265] ---[ end trace 7f3f7f6193b663ed ]---
[  139.324956] note: aplay[463] exited with preempt_count 1
~~~~

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Stefan Wahren <stefan.wahren@i2se.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: Ray Jui <rjui@broadcom.com>
Cc: Scott Branden <sbranden@broadcom.com>
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: Michael Zoran <mzoran@crowfest.net>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: linux-rpi-kernel@lists.infradead.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: devel@driverdev.osuosl.org
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/staging/vc04_services/bcm2835-audio/bcm2835.c |   54 ++++++++----------
 1 file changed, 25 insertions(+), 29 deletions(-)

--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
@@ -25,6 +25,10 @@ MODULE_PARM_DESC(enable_compat_alsa,
 static void snd_devm_unregister_child(struct device *dev, void *res)
 {
 	struct device *childdev = *(struct device **)res;
+	struct bcm2835_chip *chip = dev_get_drvdata(childdev);
+	struct snd_card *card = chip->card;
+
+	snd_card_free(card);
 
 	device_unregister(childdev);
 }
@@ -50,6 +54,13 @@ static int snd_devm_add_child(struct dev
 	return 0;
 }
 
+static void snd_bcm2835_release(struct device *dev)
+{
+	struct bcm2835_chip *chip = dev_get_drvdata(dev);
+
+	kfree(chip);
+}
+
 static struct device *
 snd_create_device(struct device *parent,
 		  struct device_driver *driver,
@@ -65,6 +76,7 @@ snd_create_device(struct device *parent,
 	device_initialize(device);
 	device->parent = parent;
 	device->driver = driver;
+	device->release = snd_bcm2835_release;
 
 	dev_set_name(device, "%s", name);
 
@@ -75,18 +87,19 @@ snd_create_device(struct device *parent,
 	return device;
 }
 
-static int snd_bcm2835_free(struct bcm2835_chip *chip)
-{
-	kfree(chip);
-	return 0;
-}
-
 /* component-destructor
  * (see "Management of Cards and Components")
  */
 static int snd_bcm2835_dev_free(struct snd_device *device)
 {
-	return snd_bcm2835_free(device->device_data);
+	struct bcm2835_chip *chip = device->device_data;
+	struct snd_card *card = chip->card;
+
+	/* TODO: free pcm, ctl */
+
+	snd_device_free(card, chip);
+
+	return 0;
 }
 
 /* chip-specific constructor
@@ -111,7 +124,7 @@ static int snd_bcm2835_create(struct snd
 
 	err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
 	if (err) {
-		snd_bcm2835_free(chip);
+		kfree(chip);
 		return err;
 	}
 
@@ -119,31 +132,14 @@ static int snd_bcm2835_create(struct snd
 	return 0;
 }
 
-static void snd_devm_card_free(struct device *dev, void *res)
+static struct snd_card *snd_bcm2835_card_new(struct device *dev)
 {
-	struct snd_card *snd_card = *(struct snd_card **)res;
-
-	snd_card_free(snd_card);
-}
-
-static struct snd_card *snd_devm_card_new(struct device *dev)
-{
-	struct snd_card **dr;
 	struct snd_card *card;
 	int ret;
 
-	dr = devres_alloc(snd_devm_card_free, sizeof(*dr), GFP_KERNEL);
-	if (!dr)
-		return ERR_PTR(-ENOMEM);
-
 	ret = snd_card_new(dev, -1, NULL, THIS_MODULE, 0, &card);
-	if (ret) {
-		devres_free(dr);
+	if (ret)
 		return ERR_PTR(ret);
-	}
-
-	*dr = card;
-	devres_add(dev, dr);
 
 	return card;
 }
@@ -260,7 +256,7 @@ static int snd_add_child_device(struct d
 		return PTR_ERR(child);
 	}
 
-	card = snd_devm_card_new(child);
+	card = snd_bcm2835_card_new(child);
 	if (IS_ERR(card)) {
 		dev_err(child, "Failed to create card");
 		return PTR_ERR(card);
@@ -302,7 +298,7 @@ static int snd_add_child_device(struct d
 		return err;
 	}
 
-	dev_set_drvdata(child, card);
+	dev_set_drvdata(child, chip);
 	dev_info(child, "card created with %d channels\n", numchans);
 
 	return 0;

WARNING: multiple messages have this Message-ID (diff)
From: gregkh@linuxfoundation.org (Greg Kroah-Hartman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4.16 090/161] staging: bcm2835-audio: Release resources on module_exit()
Date: Thu, 24 May 2018 11:38:35 +0200	[thread overview]
Message-ID: <20180524093029.222420874@linuxfoundation.org> (raw)
In-Reply-To: <20180524093018.331893860@linuxfoundation.org>

4.16-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Kirill Marinushkin <k.marinushkin@gmail.com>

[ Upstream commit 626118b472d2eb45f83a0276a18d3e6a01c69f6a ]

In the current implementation, `rmmod snd_bcm2835` does not release
resources properly. It causes an oops when trying to list sound devices.

This commit fixes it.

The details WRT allocation / free are described below.

Device structure WRT allocation:

pdev
  \childdev[]
    \card
      \chip
        \pcm
        \ctl

Allocation / register sequence:

* childdev: devm_kzalloc      - freed during driver detach
* childdev: device_initialize - freed during device_unregister
* pdev: devres_alloc          - freed during driver detach
* childdev: device_add        - removed during device_unregister
* pdev, childdev: devres_add  - freed during driver detach
* card: snd_card_new          - freed during snd_card_free
* chip: kzalloc               - freed during kfree
* card, chip: snd_device_new  - freed during snd_device_free
* chip: new_pcm               - TODO: free pcm
* chip: new_ctl               - TODO: free ctl
* card: snd_card_register     - unregistered during snd_card_free

Free / unregister sequence:

* card: snd_card_free
* card, chip: snd_device_free
* childdev: device_unregister
* chip: kfree

Steps to reproduce the issue before this commit:

~~~~
$ rmmod snd_bcm2835
$ aplay -L
[  138.648130] Unable to handle kernel paging request at virtual address 7f1343c0
[  138.660415] pgd = ad8f0000
[  138.665567] [7f1343c0] *pgd=3864c811, *pte=00000000, *ppte=00000000
[  138.674887] Internal error: Oops: 7 [#1] SMP ARM
[  138.683571] Modules linked in: sha256_generic cfg80211 rfkill snd_pcm snd_timer
 snd fixed uio_pdrv_genirq uio ip_tables x_tables ipv6 [last unloaded: snd_bcm2835
]
[  138.706594] CPU: 3 PID: 463 Comm: aplay Tainted: G        WC       4.15.0-rc1-v
7+ #6
[  138.719833] Hardware name: BCM2835
[  138.726016] task: b877ac00 task.stack: aebec000
[  138.733408] PC is at try_module_get+0x38/0x24c
[  138.740813] LR is at snd_ctl_open+0x58/0x194 [snd]
[  138.748485] pc : [<801c4d5c>]    lr : [<7f0e6b2c>]    psr: 20000013
[  138.757709] sp : aebedd60  ip : aebedd88  fp : aebedd84
[  138.765884] r10: 00000000  r9 : 00000004  r8 : 7f0ed440
[  138.774040] r7 : b7e469b0  r6 : 7f0e6b2c  r5 : afd91900  r4 : 7f1343c0
[  138.783571] r3 : aebec000  r2 : 00000001  r1 : b877ac00  r0 : 7f1343c0
[  138.793084] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  138.803300] Control: 10c5387d  Table: 2d8f006a  DAC: 00000055
[  138.812064] Process aplay (pid: 463, stack limit = 0xaebec210)
[  138.820868] Stack: (0xaebedd60 to 0xaebee000)
[  138.828207] dd60: 00000000 b848d000 afd91900 00000000 b7e469b0 7f0ed440 aebedda4 aebedd88
[  138.842371] dd80: 7f0e6b2c 801c4d30 afd91900 7f0ea4dc 00000000 b7e469b0 aebeddcc aebedda8
[  138.856611] dda0: 7f0e250c 7f0e6ae0 7f0e2464 b8478ec0 b7e469b0 afd91900 7f0ea388 00000000
[  138.870864] ddc0: aebeddf4 aebeddd0 802ce590 7f0e2470 8090ab64 afd91900 afd91900 b7e469b0
[  138.885301] dde0: afd91908 802ce4e4 aebede1c aebeddf8 802c57b4 802ce4f0 afd91900 aebedea8
[  138.900110] de00: b7fa4c00 00000000 00000000 00000004 aebede3c aebede20 802c6ba8 802c56b4
[  138.915260] de20: aebedea8 00000000 aebedf5c 00000000 aebedea4 aebede40 802d9a68 802c6b58
[  138.930661] de40: b874ddd0 00000000 00000000 00000001 00000041 00000000 afd91900 aebede70
[  138.946402] de60: 00000000 00000000 00000002 b7e469b0 b8a87610 b8d6ab80 801852f8 00080000
[  138.962314] de80: aebedf5c aebedea8 00000001 80108464 aebec000 00000000 aebedf4c aebedea8
[  138.978414] dea0: 802dacd4 802d970c b8a87610 b8d6ab80 a7982bc6 00000009 af363019 b9231480
[  138.994617] dec0: 00000000 b8c038a0 b7e469b0 00000101 00000002 00000238 00000000 00000000
[  139.010823] dee0: 00000000 aebedee8 00080000 0000000f aebedf3c aebedf00 802ed7e4 80843f94
[  139.027025] df00: 00000003 00080000 b9231490 b9231480 00000000 00080000 af363000 00000000
[  139.043229] df20: 00000005 00000002 ffffff9c 00000000 00080000 ffffff9c af363000 00000003
[  139.059430] df40: aebedf94 aebedf50 802c6f70 802dac70 aebec000 00000000 00000001 00000000
[  139.075629] df60: 00020000 00000004 00000100 00000001 7ebe577c 0002e038 00000000 00000005
[  139.091828] df80: 80108464 aebec000 aebedfa4 aebedf98 802c7060 802c6e6c 00000000 aebedfa8
[  139.108025] dfa0: 801082c0 802c7040 7ebe577c 0002e038 7ebe577c 00080000 00000b98 e81c8400
[  139.124222] dfc0: 7ebe577c 0002e038 00000000 00000005 7ebe57e4 00a20af8 7ebe57f0 76f87394
[  139.140419] dfe0: 00000000 7ebe55c4 76ec88e8 76df1d9c 60000010 7ebe577c 00000000 00000000
[  139.156715] [<801c4d5c>] (try_module_get) from [<7f0e6b2c>] (snd_ctl_open+0x58/0x194 [snd])
[  139.173222] [<7f0e6b2c>] (snd_ctl_open [snd]) from [<7f0e250c>] (snd_open+0xa8/0x14c [snd])
[  139.189683] [<7f0e250c>] (snd_open [snd]) from [<802ce590>] (chrdev_open+0xac/0x188)
[  139.205465] [<802ce590>] (chrdev_open) from [<802c57b4>] (do_dentry_open+0x10c/0x314)
[  139.221347] [<802c57b4>] (do_dentry_open) from [<802c6ba8>] (vfs_open+0x5c/0x88)
[  139.236788] [<802c6ba8>] (vfs_open) from [<802d9a68>] (path_openat+0x368/0x944)
[  139.248270] [<802d9a68>] (path_openat) from [<802dacd4>] (do_filp_open+0x70/0xc4)
[  139.263731] [<802dacd4>] (do_filp_open) from [<802c6f70>] (do_sys_open+0x110/0x1d4)
[  139.279378] [<802c6f70>] (do_sys_open) from [<802c7060>] (SyS_open+0x2c/0x30)
[  139.290647] [<802c7060>] (SyS_open) from [<801082c0>] (ret_fast_syscall+0x0/0x28)
[  139.306021] Code: e3c3303f e5932004 e2822001 e5832004 (e5943000)
[  139.316265] ---[ end trace 7f3f7f6193b663ed ]---
[  139.324956] note: aplay[463] exited with preempt_count 1
~~~~

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Stefan Wahren <stefan.wahren@i2se.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: Ray Jui <rjui@broadcom.com>
Cc: Scott Branden <sbranden@broadcom.com>
Cc: bcm-kernel-feedback-list at broadcom.com
Cc: Michael Zoran <mzoran@crowfest.net>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: linux-rpi-kernel at lists.infradead.org
Cc: linux-arm-kernel at lists.infradead.org
Cc: devel at driverdev.osuosl.org
Cc: linux-kernel at vger.kernel.org
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/staging/vc04_services/bcm2835-audio/bcm2835.c |   54 ++++++++----------
 1 file changed, 25 insertions(+), 29 deletions(-)

--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
@@ -25,6 +25,10 @@ MODULE_PARM_DESC(enable_compat_alsa,
 static void snd_devm_unregister_child(struct device *dev, void *res)
 {
 	struct device *childdev = *(struct device **)res;
+	struct bcm2835_chip *chip = dev_get_drvdata(childdev);
+	struct snd_card *card = chip->card;
+
+	snd_card_free(card);
 
 	device_unregister(childdev);
 }
@@ -50,6 +54,13 @@ static int snd_devm_add_child(struct dev
 	return 0;
 }
 
+static void snd_bcm2835_release(struct device *dev)
+{
+	struct bcm2835_chip *chip = dev_get_drvdata(dev);
+
+	kfree(chip);
+}
+
 static struct device *
 snd_create_device(struct device *parent,
 		  struct device_driver *driver,
@@ -65,6 +76,7 @@ snd_create_device(struct device *parent,
 	device_initialize(device);
 	device->parent = parent;
 	device->driver = driver;
+	device->release = snd_bcm2835_release;
 
 	dev_set_name(device, "%s", name);
 
@@ -75,18 +87,19 @@ snd_create_device(struct device *parent,
 	return device;
 }
 
-static int snd_bcm2835_free(struct bcm2835_chip *chip)
-{
-	kfree(chip);
-	return 0;
-}
-
 /* component-destructor
  * (see "Management of Cards and Components")
  */
 static int snd_bcm2835_dev_free(struct snd_device *device)
 {
-	return snd_bcm2835_free(device->device_data);
+	struct bcm2835_chip *chip = device->device_data;
+	struct snd_card *card = chip->card;
+
+	/* TODO: free pcm, ctl */
+
+	snd_device_free(card, chip);
+
+	return 0;
 }
 
 /* chip-specific constructor
@@ -111,7 +124,7 @@ static int snd_bcm2835_create(struct snd
 
 	err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
 	if (err) {
-		snd_bcm2835_free(chip);
+		kfree(chip);
 		return err;
 	}
 
@@ -119,31 +132,14 @@ static int snd_bcm2835_create(struct snd
 	return 0;
 }
 
-static void snd_devm_card_free(struct device *dev, void *res)
+static struct snd_card *snd_bcm2835_card_new(struct device *dev)
 {
-	struct snd_card *snd_card = *(struct snd_card **)res;
-
-	snd_card_free(snd_card);
-}
-
-static struct snd_card *snd_devm_card_new(struct device *dev)
-{
-	struct snd_card **dr;
 	struct snd_card *card;
 	int ret;
 
-	dr = devres_alloc(snd_devm_card_free, sizeof(*dr), GFP_KERNEL);
-	if (!dr)
-		return ERR_PTR(-ENOMEM);
-
 	ret = snd_card_new(dev, -1, NULL, THIS_MODULE, 0, &card);
-	if (ret) {
-		devres_free(dr);
+	if (ret)
 		return ERR_PTR(ret);
-	}
-
-	*dr = card;
-	devres_add(dev, dr);
 
 	return card;
 }
@@ -260,7 +256,7 @@ static int snd_add_child_device(struct d
 		return PTR_ERR(child);
 	}
 
-	card = snd_devm_card_new(child);
+	card = snd_bcm2835_card_new(child);
 	if (IS_ERR(card)) {
 		dev_err(child, "Failed to create card");
 		return PTR_ERR(card);
@@ -302,7 +298,7 @@ static int snd_add_child_device(struct d
 		return err;
 	}
 
-	dev_set_drvdata(child, card);
+	dev_set_drvdata(child, chip);
 	dev_info(child, "card created with %d channels\n", numchans);
 
 	return 0;

  parent reply	other threads:[~2018-05-24  9:38 UTC|newest]

Thread overview: 176+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-24  9:37 [PATCH 4.16 000/161] 4.16.12-stable review Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 001/161] net/mlx5: Fix build break when CONFIG_SMP=n Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 002/161] net: Fix a bug in removing queues from XPS map Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 003/161] net/mlx4_core: Fix error handling in mlx4_init_port_info Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 004/161] net/sched: fix refcnt leak in the error path of tcf_vlan_init() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 005/161] net: sched: red: avoid hashing NULL child Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 006/161] net/smc: check for missing nlattrs in SMC_PNETID messages Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 007/161] net: test tailroom before appending to linear skb Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 008/161] packet: in packet_snd start writing at link layer allocation Greg Kroah-Hartman
2018-05-24 14:53   ` Tariq Toukan
2018-05-24 15:01     ` Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 009/161] sock_diag: fix use-after-free read in __sk_free Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 010/161] tcp: purge write queue in tcp_connect_init() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 011/161] tun: fix use after free for ptr_ring Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 012/161] tuntap: fix use after free during release Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 013/161] cxgb4: Correct ntuple mask validation for hash filters Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 014/161] net: dsa: bcm_sf2: Fix RX_CLS_LOC_ANY overwrite for last rule Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 015/161] net: dsa: Do not register devlink for unused ports Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 016/161] net: dsa: bcm_sf2: Fix IPv6 rules and chain ID Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 017/161] net: dsa: bcm_sf2: Fix IPv6 rule half deletion Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 018/161] 3c59x: convert to generic DMA API Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 019/161] cxgb4: fix offset in collecting TX rate limit info Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 020/161] vmxnet3: set the DMA mask before the first DMA map operation Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 021/161] vmxnet3: use DMA memory barriers where required Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 022/161] net: ip6_gre: Request headroom in __gre6_xmit() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 023/161] net: ip6_gre: Fix headroom request in ip6erspan_tunnel_xmit() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 024/161] net: ip6_gre: Split up ip6gre_tnl_link_config() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 025/161] net: ip6_gre: Split up ip6gre_tnl_change() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 026/161] net: ip6_gre: Split up ip6gre_newlink() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 027/161] net: ip6_gre: Split up ip6gre_changelink() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 028/161] net: ip6_gre: Fix ip6erspan hlen calculation Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 029/161] net: ip6_gre: fix tunnel metadata device sharing Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 030/161] qed: LL2 flush isles when connection is closed Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 031/161] qed: Fix possibility of list corruption during rmmod flows Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 032/161] qed: Fix LL2 race during connection terminate Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 033/161] sparc: vio: use put_device() instead of kfree() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 034/161] ext2: fix a block leak Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 035/161] powerpc/rfi-flush: Always enable fallback flush on pseries Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 036/161] powerpc: Add security feature flags for Spectre/Meltdown Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 037/161] powerpc/pseries: Add new H_GET_CPU_CHARACTERISTICS flags Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 038/161] powerpc/pseries: Set or clear security feature flags Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 039/161] powerpc/powernv: " Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 040/161] powerpc/64s: Move cpu_show_meltdown() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 041/161] powerpc/64s: Enhance the information in cpu_show_meltdown() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 042/161] powerpc/powernv: Use the security flags in pnv_setup_rfi_flush() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 043/161] powerpc/pseries: Use the security flags in pseries_setup_rfi_flush() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 044/161] powerpc/64s: Wire up cpu_show_spectre_v1() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 045/161] powerpc/64s: Wire up cpu_show_spectre_v2() Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 046/161] powerpc/pseries: Fix clearing of security feature flags Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 047/161] powerpc: Move default " Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 048/161] powerpc/64s: Add support for a store forwarding barrier at kernel entry/exit Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 049/161] s390: move nobp parameter functions to nospec-branch.c Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 050/161] s390: add automatic detection of the spectre defense Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 051/161] s390: report spectre mitigation via syslog Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 052/161] s390: add sysfs attributes for spectre Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 053/161] s390: add assembler macros for CPU alternatives Greg Kroah-Hartman
2018-05-24  9:37 ` [PATCH 4.16 054/161] s390: correct nospec auto detection init order Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 055/161] s390: correct module section names for expoline code revert Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 056/161] s390: move expoline assembler macros to a header Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 057/161] s390/crc32-vx: use expoline for indirect branches Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 058/161] s390/lib: " Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 059/161] s390/ftrace: " Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 060/161] s390/kernel: " Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 061/161] s390: move spectre sysfs attribute code Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 062/161] s390: extend expoline to BC instructions Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 063/161] s390: use expoline thunks in the BPF JIT Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 064/161] scsi: sg: allocate with __GFP_ZERO in sg_build_indirect() Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 065/161] scsi: zfcp: fix infinite iteration on ERP ready list Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 066/161] Bluetooth: btusb: Add USB ID 7392:a611 for Edimax EW-7611ULB Greg Kroah-Hartman
2018-05-24  9:38   ` Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 067/161] ALSA: usb-audio: Add native DSD support for Luxman DA-06 Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 068/161] usb: dwc3: Add SoftReset PHY synchonization delay Greg Kroah-Hartman
2018-05-24  9:38   ` Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 069/161] usb: dwc3: Update DWC_usb31 GTXFIFOSIZ reg fields Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 070/161] usb: dwc3: Makefile: fix link error on randconfig Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 071/161] xhci: zero usb device slot_id member when disabling and freeing a xhci slot Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 072/161] usb: dwc2: Fix interval type issue Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 073/161] usb: dwc2: hcd: Fix host channel halt flow Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 074/161] usb: dwc2: host: Fix transaction errors in host mode Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 075/161] usb: gadget: ffs: Let setup() return USB_GADGET_DELAYED_STATUS Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 076/161] usb: gadget: ffs: Execute copy_to_user() with USER_DS set Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 077/161] usbip: Correct maximum value of CONFIG_USBIP_VHCI_HC_PORTS Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 078/161] usb: gadget: udc: change comparison to bitshift when dealing with a mask Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 079/161] usb: gadget: composite: fix incorrect handling of OS desc requests Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 080/161] media: lgdt3306a: Fix module count mismatch on usb unplug Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 081/161] media: em28xx: USB bulk packet size fix Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 082/161] Bluetooth: btusb: Add device ID for RTL8822BE Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 083/161] Bluetooth: btusb: Add support for Intel Bluetooth device 22560 [8087:0026] Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 084/161] xhci: Show what USB release number the xHC supports from protocol capablity Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 085/161] loop: dont call into filesystem while holding lo_ctl_mutex Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 086/161] loop: fix LOOP_GET_STATUS lock imbalance Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 087/161] cfg80211: limit wiphy names to 128 bytes Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 088/161] hfsplus: stop workqueue when fill_super() failed Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 089/161] x86/kexec: Avoid double free_page() upon do_kexec_load() failure Greg Kroah-Hartman
2018-05-24  9:38   ` Greg Kroah-Hartman
2018-05-24  9:38 ` Greg Kroah-Hartman [this message]
2018-05-24  9:38   ` [PATCH 4.16 090/161] staging: bcm2835-audio: Release resources on module_exit() Greg Kroah-Hartman
2018-05-24  9:38   ` Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 091/161] staging: fsl-dpaa2/eth: Fix incorrect kfree Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 092/161] staging: lustre: fix bug in osc_enter_cache_try Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 093/161] staging: fsl-dpaa2/eth: Fix incorrect casts Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 094/161] staging: rtl8192u: return -ENOMEM on failed allocation of priv->oldaddr Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 095/161] staging: ks7010: Use constants from ieee80211_eid instead of literal ints Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 096/161] staging: lustre: lmv: correctly iput lmo_root Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 097/161] crypto: inside-secure - move the digest to the request context Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 098/161] crypto: inside-secure - wait for the request to complete if in the backlog Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 099/161] crypto: atmel-aes - fix the keys zeroing on errors Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 100/161] crypto: ccp - dont disable interrupts while setting up debugfs Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 101/161] crypto: inside-secure - do not process request if no command was issued Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 102/161] crypto: inside-secure - fix the cache_len computation Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 103/161] crypto: inside-secure - fix the extra cache computation Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 104/161] crypto: inside-secure - do not overwrite the threshold value Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 105/161] crypto: sunxi-ss - Add MODULE_ALIAS to sun4i-ss Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 106/161] crypto: inside-secure - fix the invalidation step during cra_exit Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 107/161] scsi: aacraid: Insure command thread is not recursively stopped Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 108/161] scsi: devinfo: add HP DISK-SUBSYSTEM device, for HP XP arrays Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 109/161] scsi: lpfc: Fix NVME Initiator FirstBurst Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 110/161] scsi: core: Make SCSI Status CONDITION MET equivalent to GOOD Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 111/161] scsi: mvsas: fix wrong endianness of sgpio api Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 112/161] scsi: lpfc: Fix issue_lip if link is disabled Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 113/161] scsi: lpfc: Fix nonrecovery of NVME controller after cable swap Greg Kroah-Hartman
2018-05-24  9:38 ` [PATCH 4.16 114/161] scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 115/161] scsi: lpfc: Fix IO failure during hba reset testing with nvme io Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 116/161] scsi: lpfc: Fix frequency of Release WQE CQEs Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 117/161] ASoC: rockchip: rk3288-hdmi-analog: Select needed codecs Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 118/161] ASoC: samsung: odroid: Fix 32000 sample rate handling Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 119/161] ASoC: topology: create TLV data for dapm widgets Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 120/161] ASoC: samsung: i2s: Ensure the RCLK rate is properly determined Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 121/161] clk: rockchip: Fix wrong parent for SDMMC phase clock for rk3228 Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 122/161] clk: Dont show the incorrect clock phase Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 123/161] clk: hisilicon: mark wdt_mux_p[] as const Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 124/161] clk: tegra: Fix pll_u rate configuration Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 125/161] clk: rockchip: Prevent calculating mmc phase if clock rate is zero Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 126/161] clk: samsung: s3c2410: Fix PLL rates Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 127/161] clk: samsung: exynos7: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 128/161] clk: samsung: exynos5260: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 129/161] clk: samsung: exynos5433: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 130/161] clk: samsung: exynos5250: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 131/161] clk: samsung: exynos3250: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 132/161] clk: meson: axg: fix the od shift of the sys_pll Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 133/161] clk: meson: axg: add the fractional part of the fixed_pll Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 134/161] media: ov5645: add missing of_node_put() in error path Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 135/161] media: cx23885: Override 888 ImpactVCBe crystal frequency Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 136/161] media: cx23885: Set subdev host data to clk_freq pointer Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 137/161] media: s3c-camif: fix out-of-bounds array access Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 138/161] media: lgdt3306a: Fix a double kfree on i2c device remove Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 139/161] media: em28xx: Add Hauppauge SoloHD/DualHD bulk models Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 140/161] media: v4l: vsp1: Fix display stalls when requesting too many inputs Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 141/161] media: i2c: adv748x: fix HDMI field heights Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 142/161] media: vb2: Fix videobuf2 to map correct area Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 143/161] media: vivid: fix incorrect capabilities for radio Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 144/161] media: cx25821: prevent out-of-bounds read on array card Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 145/161] serial: mvebu-uart: fix tx lost characters Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 146/161] serial: xuartps: Fix out-of-bounds access through DT alias Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 147/161] serial: sh-sci: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 148/161] serial: samsung: Fix out-of-bounds access through serial port index Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 149/161] serial: mxs-auart: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 150/161] serial: imx: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 151/161] serial: fsl_lpuart: Fix out-of-bounds access through DT alias Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 152/161] serial: arc_uart: " Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 153/161] serial: 8250: Dont service RX FIFO if interrupts are disabled Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 154/161] serial: altera: ensure port->regshift is honored consistently Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 155/161] rtc: snvs: Fix usage of snvs_rtc_enable Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 156/161] rtc: hctosys: Ensure system time doesnt overflow time_t Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 157/161] rtc: rk808: fix possible race condition Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 158/161] rtc: m41t80: fix race conditions Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 159/161] rtc: tx4939: avoid unintended sign extension on a 24 bit shift Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 160/161] rtc: rp5c01: fix possible race condition Greg Kroah-Hartman
2018-05-24  9:39 ` [PATCH 4.16 161/161] rtc: goldfish: Add missing MODULE_LICENSE Greg Kroah-Hartman
2018-05-24 17:26 ` [PATCH 4.16 000/161] 4.16.12-stable review kernelci.org bot
2018-05-24 17:34 ` Guenter Roeck
2018-05-24 19:47   ` Greg Kroah-Hartman
2018-05-24 18:26 ` Dan Rue
2018-05-24 19:47   ` Greg Kroah-Hartman
2018-05-24 19:21 ` Shuah Khan
2018-05-24 19:45   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180524093029.222420874@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=alexander.levin@microsoft.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=eric@anholt.net \
    --cc=f.fainelli@gmail.com \
    --cc=k.marinushkin@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=mzoran@crowfest.net \
    --cc=rjui@broadcom.com \
    --cc=sbranden@broadcom.com \
    --cc=stable@vger.kernel.org \
    --cc=stefan.wahren@i2se.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.