Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fffe487d authored by Tejun Heo's avatar Tejun Heo Committed by Jens Axboe
Browse files

pktcdvd: fix BUG caused by sysfs module reference semantics change



pkt_setup_dev() expects module reference to be held on invocation.
This used to be true for sysfs callbacks but not anymore.  Test and
grab module reference around pkt_setup_dev() in
class_pktcdvd_store_add().

Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Acked-by: default avatarPeter Osterlund <petero2@telia.com>
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 8ec680e4
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -358,10 +358,19 @@ static ssize_t class_pktcdvd_store_add(struct class *c, const char *buf,
					size_t count)
{
	unsigned int major, minor;

	if (sscanf(buf, "%u:%u", &major, &minor) == 2) {
		/* pkt_setup_dev() expects caller to hold reference to self */
		if (!try_module_get(THIS_MODULE))
			return -ENODEV;

		pkt_setup_dev(MKDEV(major, minor), NULL);

		module_put(THIS_MODULE);

		return count;
	}

	return -EINVAL;
}