diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/net/rrunner.c linux-2.5/drivers/net/rrunner.c
--- bk-linus/drivers/net/rrunner.c 2003-08-04 01:00:27.000000000 +0100
+++ linux-2.5/drivers/net/rrunner.c 2003-08-06 18:59:37.000000000 +0100
@@ -1645,6 +1645,7 @@ static int rr_ioctl(struct net_device *d
printk(KERN_ERR "%s: Error reading EEPROM\n",
dev->name);
error = -EFAULT;
+ spin_unlock_irqrestore(&rrpriv->lock, flags);
goto gf_out;
}
spin_unlock_irqrestore(&rrpriv->lock, flags);
[email protected] <[email protected]> :
> diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/net/rrunner.c linux-2.5/drivers/net/rrunner.c
> --- bk-linus/drivers/net/rrunner.c 2003-08-04 01:00:27.000000000 +0100
> +++ linux-2.5/drivers/net/rrunner.c 2003-08-06 18:59:37.000000000 +0100
> @@ -1645,6 +1645,7 @@ static int rr_ioctl(struct net_device *d
> printk(KERN_ERR "%s: Error reading EEPROM\n",
> dev->name);
> error = -EFAULT;
> + spin_unlock_irqrestore(&rrpriv->lock, flags);
> goto gf_out;
> }
> spin_unlock_irqrestore(&rrpriv->lock, flags);
> -
Bloat :o)
--- linux-2.6.0-test3/drivers/net/rrunner.c Mon Aug 11 20:03:21 2003
+++ linux-2.6.0-test3/drivers/net/rrunner.c Mon Aug 11 20:03:38 2003
@@ -1641,13 +1641,13 @@ static int rr_ioctl(struct net_device *d
spin_lock_irqsave(&rrpriv->lock, flags);
i = rr_read_eeprom(rrpriv, 0, image, EEPROM_BYTES);
+ spin_unlock_irqrestore(&rrpriv->lock, flags);
if (i != EEPROM_BYTES){
printk(KERN_ERR "%s: Error reading EEPROM\n",
dev->name);
error = -EFAULT;
goto gf_out;
}
- spin_unlock_irqrestore(&rrpriv->lock, flags);
error = copy_to_user(rq->ifr_data, image, EEPROM_BYTES);
if (error)
error = -EFAULT;
On Mon, Aug 11, 2003 at 08:11:48PM +0200, Francois Romieu wrote:
> > + spin_unlock_irqrestore(&rrpriv->lock, flags);
> > goto gf_out;
> > }
> > spin_unlock_irqrestore(&rrpriv->lock, flags);
> > -
>
> Bloat :o)
Agreed, yours a much nicer fix.
Dave
--
Dave Jones http://www.codemonkey.org.uk