MCB: two additional fixes for v4.7
cover MCB: two additional fixes for v4.7
Hi Greg,
Here are two additional fixes for MCB from me, which would be good to have in v4.7.
One fixes a panic when doing a insmod/rmmod loop and one grabs a reference to the carrier driver's module as long as client drivers are loaded.
Both bugs have been reported by Andy and he tested the fixes as well.
Sorry for being so close to the merge window.
Johannes Thumshirn (2):
mcb: Acquire reference to device in probe
mcb: Acquire reference to carrier module in core
drivers/mcb/mcb-core.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
Signature · 1 line
2.8.1
PATCH 1/2 mcb: Acquire reference to device in probe
mcb_probe() does not aqcuire a reference to the probed device but drops one when removing the device. As it is actually using the device, it should grab a reference via get_device().
This could lead to a panic found with a rmmod/modprobe stress test
--- drivers/mcb/mcb-core.c | 1 + 1 file changed, 1 insertion(+)
drivers/mcb/mcb-core.c +1 -0
@@ -66,6 +66,7 @@ static int mcb_probe(struct device *dev)if (!found_id)return -ENODEV ; +get_device (dev);return mdrv->probe (mdev, found_id); }
Signature · 1 line
2.8.1
PATCH 2/2 mcb: Acquire reference to carrier module in core
In reply to Johannes ThumshirnAcquire a reference to the carrier's kernel module in bus code, so it can't be removed from the kernel while it still has a bus and thus possibly devices attached to it.
--- drivers/mcb/mcb-core.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
drivers/mcb/mcb-core.c +15 -1
@@ -61,22 +61,36 @@ static int mcb_probe(struct device *dev)struct mcb_driver *mdrv =to_mcb_driver (dev->driver);struct mcb_device *mdev =to_mcb_device (dev);const struct mcb_device_id *found_id; +struct module *carrier_mod; +int ret; found_id =mcb_match_id (mdrv->id_table, mdev);if (!found_id)return -ENODEV ; + carrier_mod = mdev->dev.parent->driver->owner; +if (!try_module_get (carrier_mod)) +return -EINVAL ; +get_device (dev); -return mdrv->probe (mdev, found_id); + ret = mdrv->probe (mdev, found_id); +if (ret) +module_put (carrier_mod); + +return ret; }static int mcb_remove (struct device *dev) {struct mcb_driver *mdrv =to_mcb_driver (dev->driver);struct mcb_device *mdev =to_mcb_device (dev); +struct module *carrier_mod; mdrv->remove (mdev); + carrier_mod = mdev->dev.parent->driver->owner; +module_put (carrier_mod); +put_device (&mdev->dev);return 0 ;
Signature · 1 line
2.8.1
Quoted 10 lines · Johannes Thumshirn
Hi Greg,
Here are two additional fixes for MCB from me, which would be good to have in v4.7.
One fixes a panic when doing a insmod/rmmod loop and one grabs a reference to the carrier driver's module as long as client drivers are loaded.
Both bugs have been reported by Andy and he tested the fixes as well.
Quoted 12 lines
Sorry for being so close to the merge window.
Johannes Thumshirn (2):
mcb: Acquire reference to device in probe
mcb: Acquire reference to carrier module in coredrivers/mcb/mcb-core.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)Signature · 1 line
2.8.1
Hi Greg,
Sorry for pinging you in the merge window, but have you seen the patches, or shall I re-send them? It would be nice to get them into v4.7 but I'd be OK with v4.8 as well.
Thanks,
Johannes
Signature · 6 lines
Johannes Thumshirn Storage [email protected] +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
Quoted 24 lines · Johannes Thumshirn
Quoted 10 lines · Johannes Thumshirn
Hi Greg,
Here are two additional fixes for MCB from me, which would be good to have in v4.7.
One fixes a panic when doing a insmod/rmmod loop and one grabs a reference to the carrier driver's module as long as client drivers are loaded.
Both bugs have been reported by Andy and he tested the fixes as well.
Quoted 12 lines
Sorry for being so close to the merge window.
Johannes Thumshirn (2):
mcb: Acquire reference to device in probe
mcb: Acquire reference to carrier module in coredrivers/mcb/mcb-core.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)Signature · 1 line
2.8.1
Quoted 5 lines
Hi Greg,
Sorry for pinging you in the merge window, but have you seen the patches, or shall I re-send them? It would be nice to get them into v4.7 but I'd be OK with v4.8 as well.
Sorry for the delay, both now applied.
greg k-h