|
@@ -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;
|
|
|
}
|
|
|
|