]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.10.7/parport-fix-attempt-to-write-duplicate-procfiles.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.10.7 / parport-fix-attempt-to-write-duplicate-procfiles.patch
CommitLineData
309a988b
GKH
1From 03270c6ac6207fc55bbf9d20d195029dca210c79 Mon Sep 17 00:00:00 2001
2From: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
3Date: Mon, 6 Mar 2017 23:23:42 +0000
4Subject: parport: fix attempt to write duplicate procfiles
5
6From: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
7
8commit 03270c6ac6207fc55bbf9d20d195029dca210c79 upstream.
9
10Usually every parallel port will have a single pardev registered with
11it. But ppdev driver is an exception. This userspace parallel port
12driver allows to create multiple parrallel port devices for a single
13parallel 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
17Use the same logic as used in parport_register_device() and register
18the proc files only once for each parallel port.
19
20Fixes: 6fa45a226897 ("parport: add device-model to parport subsystem")
21Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1414656
22Bugzilla: https://bugs.archlinux.org/task/52322
23Tested-by: James Feeney <james@nurealm.net>
24Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
25Signed-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