mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
parport: quickfix the proc registration bug
Ideally we should have a directory of drivers and a link to the 'active' driver. For now just show the first device which is effectively the existing semantics without a warning. This is an update on the original buggy patch that I then forgot to resubmit. Confusingly it was proposed by Red Hat, written by Etched Pixels fixed and submitted by Intel ... Resolves-Bug: http://bugzilla.kernel.org/show_bug.cgi?id=9749 Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d3ae33efb8
commit
05ad709d04
2 changed files with 14 additions and 3 deletions
|
@ -614,7 +614,10 @@ parport_register_device(struct parport *port, const char *name,
|
||||||
* pardevice fields. -arca
|
* pardevice fields. -arca
|
||||||
*/
|
*/
|
||||||
port->ops->init_state(tmp, tmp->state);
|
port->ops->init_state(tmp, tmp->state);
|
||||||
parport_device_proc_register(tmp);
|
if (!test_and_set_bit(PARPORT_DEVPROC_REGISTERED, &port->devflags)) {
|
||||||
|
port->proc_device = tmp;
|
||||||
|
parport_device_proc_register(tmp);
|
||||||
|
}
|
||||||
return tmp;
|
return tmp;
|
||||||
|
|
||||||
out_free_all:
|
out_free_all:
|
||||||
|
@ -646,10 +649,14 @@ void parport_unregister_device(struct pardevice *dev)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
parport_device_proc_unregister(dev);
|
|
||||||
|
|
||||||
port = dev->port->physport;
|
port = dev->port->physport;
|
||||||
|
|
||||||
|
if (port->proc_device == dev) {
|
||||||
|
port->proc_device = NULL;
|
||||||
|
clear_bit(PARPORT_DEVPROC_REGISTERED, &port->devflags);
|
||||||
|
parport_device_proc_unregister(dev);
|
||||||
|
}
|
||||||
|
|
||||||
if (port->cad == dev) {
|
if (port->cad == dev) {
|
||||||
printk(KERN_DEBUG "%s: %s forgot to release port\n",
|
printk(KERN_DEBUG "%s: %s forgot to release port\n",
|
||||||
port->name, dev->name);
|
port->name, dev->name);
|
||||||
|
|
|
@ -324,6 +324,10 @@ struct parport {
|
||||||
int spintime;
|
int spintime;
|
||||||
atomic_t ref_count;
|
atomic_t ref_count;
|
||||||
|
|
||||||
|
unsigned long devflags;
|
||||||
|
#define PARPORT_DEVPROC_REGISTERED 0
|
||||||
|
struct pardevice *proc_device; /* Currently register proc device */
|
||||||
|
|
||||||
struct list_head full_list;
|
struct list_head full_list;
|
||||||
struct parport *slaves[3];
|
struct parport *slaves[3];
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue