Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: rc: do not access device via sysfs after rc_unregister_device()

Device drivers do not expect to have change_protocol or wakeup
re-programming to be accesed after rc_unregister_device(). This can
cause the device driver to access deallocated resources.

Cc: <stable@vger.kernel.org> # 4.16+
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

authored by

Sean Young and committed by
Mauro Carvalho Chehab
a2e2d73f 4f0835d6

+12
+12
drivers/media/rc/rc-main.c
··· 1292 1292 } 1293 1293 1294 1294 mutex_lock(&dev->lock); 1295 + if (!dev->registered) { 1296 + mutex_unlock(&dev->lock); 1297 + return -ENODEV; 1298 + } 1295 1299 1296 1300 old_protocols = *current_protocols; 1297 1301 new_protocols = old_protocols; ··· 1434 1430 return -EINVAL; 1435 1431 1436 1432 mutex_lock(&dev->lock); 1433 + if (!dev->registered) { 1434 + mutex_unlock(&dev->lock); 1435 + return -ENODEV; 1436 + } 1437 1437 1438 1438 new_filter = *filter; 1439 1439 if (fattr->mask) ··· 1552 1544 int i; 1553 1545 1554 1546 mutex_lock(&dev->lock); 1547 + if (!dev->registered) { 1548 + mutex_unlock(&dev->lock); 1549 + return -ENODEV; 1550 + } 1555 1551 1556 1552 allowed = dev->allowed_wakeup_protocols; 1557 1553