]>
Commit | Line | Data |
---|---|---|
309a988b GKH |
1 | From 03270c6ac6207fc55bbf9d20d195029dca210c79 Mon Sep 17 00:00:00 2001 |
2 | From: Sudip Mukherjee <sudipm.mukherjee@gmail.com> | |
3 | Date: Mon, 6 Mar 2017 23:23:42 +0000 | |
4 | Subject: parport: fix attempt to write duplicate procfiles | |
5 | ||
6 | From: Sudip Mukherjee <sudipm.mukherjee@gmail.com> | |
7 | ||
8 | commit 03270c6ac6207fc55bbf9d20d195029dca210c79 upstream. | |
9 | ||
10 | Usually every parallel port will have a single pardev registered with | |
11 | it. But ppdev driver is an exception. This userspace parallel port | |
12 | driver allows to create multiple parrallel port devices for a single | |
13 | parallel port. And as a result we were having a nice warning like: | |
14 | "sysctl table check failed: | |
15 | /dev/parport/parport0/devices/ppdev0/timeslice Sysctl already exists" | |
16 | ||
17 | Use the same logic as used in parport_register_device() and register | |
18 | the proc files only once for each parallel port. | |
19 | ||
20 | Fixes: 6fa45a226897 ("parport: add device-model to parport subsystem") | |
21 | Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1414656 | |
22 | Bugzilla: https://bugs.archlinux.org/task/52322 | |
23 | Tested-by: James Feeney <james@nurealm.net> | |
24 | Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> | |
25 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
26 | ||
27 | --- | |
28 | drivers/parport/share.c | 6 ++++-- | |
29 | 1 file changed, 4 insertions(+), 2 deletions(-) | |
30 | ||
31 | --- a/drivers/parport/share.c | |
32 | +++ b/drivers/parport/share.c | |
33 | @@ -939,8 +939,10 @@ parport_register_dev_model(struct parpor | |
34 | * pardevice fields. -arca | |
35 | */ | |
36 | port->ops->init_state(par_dev, par_dev->state); | |
37 | - port->proc_device = par_dev; | |
38 | - parport_device_proc_register(par_dev); | |
39 | + if (!test_and_set_bit(PARPORT_DEVPROC_REGISTERED, &port->devflags)) { | |
40 | + port->proc_device = par_dev; | |
41 | + parport_device_proc_register(par_dev); | |
42 | + } | |
43 | ||
44 | return par_dev; | |
45 |