Messages in this thread Patch in this message | | | Date | Thu, 22 Nov 2007 21:26:01 +0100 (CET) | From | Mikulas Patocka <> | Subject | [PATCH] fix plip 2 |
| |
This is my second patch for plip. Plip passes string "name" that is allocated on stack to parport_register_device. parport_register_device holds the pointer to "name" and when the registering function exits, it points nowhere.
On some machine, this bug causes bad names to appear in /proc filesystem, such as /proc/sys/dev/parport/parport0/devices/T^/ÁX^/Á, on others, the plip proc node is completely missing.
The patch also fixes documentation to note this requirement.
Mikulas
Signed-off-by: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
diff -u -r linux-2.6.24-rc2/Documentation/parport-lowlevel.txt linux-2.6.24-test/Documentation/parport-lowlevel.txt --- linux-2.6.24-rc2/Documentation/parport-lowlevel.txt 2007-11-06 22:57:46.000000000 +0100 +++ linux-2.6.24-test/Documentation/parport-lowlevel.txt 2007-11-22 21:11:28.000000000 +0100 @@ -339,6 +339,10 @@ ('port'). Once you have done that, you will be able to use parport_claim and parport_release in order to use the port. +The ('name') argument is the name of the device that appears in /proc +filesystem. The string must be valid for the whole lifetime of the +device (until parport_unregister_device is called). + This function will register three callbacks into your driver: 'preempt', 'wakeup' and 'irq'. Each of these may be NULL in order to indicate that you do not want a callback. diff -u -r linux-2.6.24-rc2/drivers/net/plip.c linux-2.6.24-test/drivers/net/plip.c --- linux-2.6.24-rc2/drivers/net/plip.c 2007-11-06 22:57:46.000000000 +0100 +++ linux-2.6.24-test/drivers/net/plip.c 2007-11-22 21:11:28.000000000 +0100 @@ -1269,7 +1269,7 @@ nl = netdev_priv(dev); nl->dev = dev; - nl->pardev = parport_register_device(port, name, plip_preempt, + nl->pardev = parport_register_device(port, dev->name, plip_preempt, plip_wakeup, plip_interrupt, 0, dev); | |