diff options
author | Alexander Gordeev <lasaine@lvk.cs.msu.su> | 2011-01-25 15:07:19 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-26 10:50:00 +1000 |
commit | 4f542e3dd90a96ee0f8fcb8173cb4104f5f753e6 (patch) | |
tree | 1127d2abe1aa2a98ccf6d8a336f8dd68a285340e /drivers/pps | |
parent | a783ac4453405b579ab7732ba3c0efc07a4b7a61 (diff) | |
download | linux-4f542e3dd90a96ee0f8fcb8173cb4104f5f753e6.tar.gz linux-4f542e3dd90a96ee0f8fcb8173cb4104f5f753e6.tar.bz2 linux-4f542e3dd90a96ee0f8fcb8173cb4104f5f753e6.zip |
pps: claim parallel port exclusively
Both pps_parport and pps_gen_parport are written in a way that they
can't share a port with any other driver. This can result in locking up
the process that loads modules or even the whole kernel if the modules
are compiled in. Use PARPORT_FLAG_EXCL to indicate this.
Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su>
Cc: Alexander Gordeev <lasaine@lvk.cs.msu.su>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/pps')
-rw-r--r-- | drivers/pps/clients/pps_parport.c | 2 | ||||
-rw-r--r-- | drivers/pps/generators/pps_gen_parport.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/pps/clients/pps_parport.c b/drivers/pps/clients/pps_parport.c index 32221efd9ca9..c571d6dd8f61 100644 --- a/drivers/pps/clients/pps_parport.c +++ b/drivers/pps/clients/pps_parport.c @@ -163,7 +163,7 @@ static void parport_attach(struct parport *port) } device->pardev = parport_register_device(port, KBUILD_MODNAME, - NULL, NULL, parport_irq, 0, device); + NULL, NULL, parport_irq, PARPORT_FLAG_EXCL, device); if (!device->pardev) { pr_err("couldn't register with %s\n", port->name); goto err_free; diff --git a/drivers/pps/generators/pps_gen_parport.c b/drivers/pps/generators/pps_gen_parport.c index 5c32f8dacf56..b93af3ebb5ba 100644 --- a/drivers/pps/generators/pps_gen_parport.c +++ b/drivers/pps/generators/pps_gen_parport.c @@ -198,7 +198,7 @@ static void parport_attach(struct parport *port) } device.pardev = parport_register_device(port, KBUILD_MODNAME, - NULL, NULL, NULL, 0, &device); + NULL, NULL, NULL, PARPORT_FLAG_EXCL, &device); if (!device.pardev) { pr_err("couldn't register with %s\n", port->name); return; |