Patch "ppdev: check before attaching port" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
ppdev: check before attaching port
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ppdev-check-before-attaching-port.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
dd5c472a60e43549d789a17a8444513eec64bd7eMon Sep 17 00:00:00 2001
From: Sudip Mukherjee <[email protected]>
Date: Sat, 12 Nov 2016 21:22:12 +0000
Subject: ppdev: check before attaching port
From: Sudip Mukherjee <[email protected]>
commit dd5c472a60e43549d789a17a8444513eec64bd7e upstream.
After parport starts using the device model, all pardevice drivers should decide in their match_port callback function if they want to attach with that particulatr port. ppdev has been converted to use the new parport device-model code but pp_attach() tried to attach with all the ports.
Create a new array of pointer and use that to remember the ports we have attached. And use that information to skip attaching ports which we have already attached.
--- drivers/char/ppdev.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-)
drivers/char/ppdev.c +21 -2
@@ -86,6 +86,9 @@ struct pp_struct {long default_inactivity; }; +/* should we use PARDEVICE_MAX here? */ +static struct device *devices[PARPORT_MAX ]; +/* pp_struct.flags bitfields */ #define PP_CLAIMED (1<<0)#define PP_EXCL (1<<1)
@@ -789,13 +792,29 @@ static const struct file_operations pp_fstatic void pp_attach (struct parport *port) { -device_create (ppdev_class, port->dev,MKDEV (PP_MAJOR , port->number), -NULL ,"parport%d" , port->number); +struct device *ret; + +if (devices[port->number]) +return ; + + ret =device_create (ppdev_class, port->dev, +MKDEV (PP_MAJOR , port->number),NULL , +"parport%d" , port->number); +if (IS_ERR (ret)) { +pr_err ("Failed to create device parport%d\n" , + port->number); +return ; + } + devices[port->number] = ret; }static void pp_detach (struct parport *port) { +if (!devices[port->number]) +return ; +device_destroy (ppdev_class,MKDEV (PP_MAJOR , port->number)); + devices[port->number] =NULL ; }static int pp_probe (struct pardevice *par_dev)
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/ppdev-check-before-attaching-port.patch queue-4.9/ppdev-fix-registering-same-device-name.patch