Re: [PATCH] several returns before unlocking in lmc_ioctl

2007-10-30 Thread Kristof Provost
On 2007-10-30 20:15:12 (+0100), Roel Kluin <[EMAIL PROTECTED]> wrote:
> Kristof Provost wrote:
> > I think you have an extra curly brace there. It breaks compile on my
> > system.
> 
> You are right. thanks for notifying me and sorry for the trouble.
> please revert my patch (b463d40cdc436a12799a60a1d6ff1941a70a5bb6)
> 
> and try instead:
This seems to compile just fine. I'm afraid I can't test it though. I
don't actually have that hardware. I mistakingly left it turned on, so I
noticed the compile error.

Kristof



pgpJRZOoa0KHW.pgp
Description: PGP signature


Re: [PATCH] several returns before unlocking in lmc_ioctl

2007-10-30 Thread Roel Kluin
Kristof Provost wrote:
> On 2007-10-23 03:47:48 (+0200), Roel Kluin <[EMAIL PROTECTED]> wrote:
>> I think we should keep the lmc_tracing. Use this patch instead.
>>
>> --
>> Several returns before unlocking in lmc_ioctl
>> 
>> Signed-off-by: Roel Kluin <[EMAIL PROTECTED]>
>> ---
>> diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
>> index 5ea8772..64eb578 100644
> 
>> @@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq 
>> *ifr, int cmd) /*fold00*/
>>  sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
>>  
>>  if (copy_to_user(ifr->ifr_data, >lmc_xinfo,
>> - sizeof (struct lmc_xinfo)))
>> -return -EFAULT;
>> -ret = 0;
>> +sizeof(struct lmc_xinfo))) {
>> +ret = -EFAULT;
>> +else
>> +ret = 0;
> I think you have an extra curly brace there. It breaks compile on my
> system.


You are right. thanks for notifying me and sorry for the trouble.
please revert my patch (b463d40cdc436a12799a60a1d6ff1941a70a5bb6)

and try instead:
--
Several returns before unlocking in lmc_ioctl

Signed-off-by: Roel Kluin <[EMAIL PROTECTED]>
---
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index 5ea8772..427226d 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -142,9 +142,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  * To date internally, just copy this out to the user.
  */
 case LMCIOCGINFO: /*fold01*/
-if (copy_to_user(ifr->ifr_data, >ictl, sizeof (lmc_ctl_t)))
-return -EFAULT;
-ret = 0;
+   if (copy_to_user(ifr->ifr_data, >ictl, sizeof(lmc_ctl_t)))
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCSINFO: /*fold01*/
@@ -159,8 +160,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(, ifr->ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 sc->lmc_media->set_status (sc, );
 
@@ -190,8 +193,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
break;
}
 
-   if (copy_from_user(_type, ifr->ifr_data, sizeof(u_int16_t)))
-return -EFAULT;
+   if (copy_from_user(_type, ifr->ifr_data, sizeof(u_int16_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 
if (new_type == old_type)
@@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
 
 if (copy_to_user(ifr->ifr_data, >lmc_xinfo,
- sizeof (struct lmc_xinfo)))
-return -EFAULT;
-ret = 0;
+   sizeof(struct lmc_xinfo)))
+   ret = -EFAULT;
+   else
+   ret = 0;
 
 break;
 
@@ -262,9 +268,9 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 if (copy_to_user(ifr->ifr_data, >stats,
  sizeof (struct lmc_statistics)))
-return -EFAULT;
-
-ret = 0;
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCCLEARLMCSTATS: /*fold01*/
@@ -292,8 +298,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(, ifr->ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
 sc->ictl.circuit_type = ctl.circuit_type;
 ret = 0;
@@ -318,12 +326,15 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 #ifdef DEBUG
 case LMCIOCDUMPEVENTLOG:
-if (copy_to_user(ifr->ifr_data, , sizeof (u32)))
-return -EFAULT;
+   if (copy_to_user(ifr->ifr_data, , sizeof(u32))) {
+   ret = -EFAULT;
+   break;
+   }
 if (copy_to_user(ifr->ifr_data + sizeof (u32), lmcEventLogBuf, sizeof 
(lmcEventLogBuf)))
-return -EFAULT;
+   ret = -EFAULT;
+   else
+   ret = 0;
 
-ret = 0;
 break;
 #endif /* end ifdef _DBG_EVENTLOG */
 case LMCIOCT1CONTROL: /*fold01*/
@@ -

Re: [PATCH] several returns before unlocking in lmc_ioctl

2007-10-30 Thread Kristof Provost
On 2007-10-23 03:47:48 (+0200), Roel Kluin <[EMAIL PROTECTED]> wrote:
> I think we should keep the lmc_tracing. Use this patch instead.
> 
> --
>     Several returns before unlocking in lmc_ioctl
> 
> Signed-off-by: Roel Kluin <[EMAIL PROTECTED]>
> ---
> diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
> index 5ea8772..64eb578 100644

> @@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq 
> *ifr, int cmd) /*fold00*/
>  sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
>  
>  if (copy_to_user(ifr->ifr_data, >lmc_xinfo,
> - sizeof (struct lmc_xinfo)))
> -return -EFAULT;
> -ret = 0;
> + sizeof(struct lmc_xinfo))) {
> + ret = -EFAULT;
> + else
> + ret = 0;
I think you have an extra curly brace there. It breaks compile on my
system.

Kristof
 


pgpKBu1cOlvRi.pgp
Description: PGP signature


Re: [PATCH] several returns before unlocking in lmc_ioctl

2007-10-30 Thread Kristof Provost
On 2007-10-23 03:47:48 (+0200), Roel Kluin [EMAIL PROTECTED] wrote:
 I think we should keep the lmc_tracing. Use this patch instead.
 
 --
 Several returns before unlocking in lmc_ioctl
 
 Signed-off-by: Roel Kluin [EMAIL PROTECTED]
 ---
 diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
 index 5ea8772..64eb578 100644
snip
 @@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq 
 *ifr, int cmd) /*fold00*/
  sc-lmc_xinfo.Magic1 = 0xDEADBEEF;
  
  if (copy_to_user(ifr-ifr_data, sc-lmc_xinfo,
 - sizeof (struct lmc_xinfo)))
 -return -EFAULT;
 -ret = 0;
 + sizeof(struct lmc_xinfo))) {
 + ret = -EFAULT;
 + else
 + ret = 0;
I think you have an extra curly brace there. It breaks compile on my
system.

Kristof
 


pgpKBu1cOlvRi.pgp
Description: PGP signature


Re: [PATCH] several returns before unlocking in lmc_ioctl

2007-10-30 Thread Roel Kluin
Kristof Provost wrote:
 On 2007-10-23 03:47:48 (+0200), Roel Kluin [EMAIL PROTECTED] wrote:
 I think we should keep the lmc_tracing. Use this patch instead.

 --
 Several returns before unlocking in lmc_ioctl
 
 Signed-off-by: Roel Kluin [EMAIL PROTECTED]
 ---
 diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
 index 5ea8772..64eb578 100644
 snip
 @@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq 
 *ifr, int cmd) /*fold00*/
  sc-lmc_xinfo.Magic1 = 0xDEADBEEF;
  
  if (copy_to_user(ifr-ifr_data, sc-lmc_xinfo,
 - sizeof (struct lmc_xinfo)))
 -return -EFAULT;
 -ret = 0;
 +sizeof(struct lmc_xinfo))) {
 +ret = -EFAULT;
 +else
 +ret = 0;
 I think you have an extra curly brace there. It breaks compile on my
 system.


You are right. thanks for notifying me and sorry for the trouble.
please revert my patch (b463d40cdc436a12799a60a1d6ff1941a70a5bb6)

and try instead:
--
Several returns before unlocking in lmc_ioctl

Signed-off-by: Roel Kluin [EMAIL PROTECTED]
---
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index 5ea8772..427226d 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -142,9 +142,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  * To date internally, just copy this out to the user.
  */
 case LMCIOCGINFO: /*fold01*/
-if (copy_to_user(ifr-ifr_data, sc-ictl, sizeof (lmc_ctl_t)))
-return -EFAULT;
-ret = 0;
+   if (copy_to_user(ifr-ifr_data, sc-ictl, sizeof(lmc_ctl_t)))
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCSINFO: /*fold01*/
@@ -159,8 +160,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(ctl, ifr-ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(ctl, ifr-ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 sc-lmc_media-set_status (sc, ctl);
 
@@ -190,8 +193,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
break;
}
 
-   if (copy_from_user(new_type, ifr-ifr_data, sizeof(u_int16_t)))
-return -EFAULT;
+   if (copy_from_user(new_type, ifr-ifr_data, sizeof(u_int16_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 
if (new_type == old_type)
@@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 sc-lmc_xinfo.Magic1 = 0xDEADBEEF;
 
 if (copy_to_user(ifr-ifr_data, sc-lmc_xinfo,
- sizeof (struct lmc_xinfo)))
-return -EFAULT;
-ret = 0;
+   sizeof(struct lmc_xinfo)))
+   ret = -EFAULT;
+   else
+   ret = 0;
 
 break;
 
@@ -262,9 +268,9 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 if (copy_to_user(ifr-ifr_data, sc-stats,
  sizeof (struct lmc_statistics)))
-return -EFAULT;
-
-ret = 0;
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCCLEARLMCSTATS: /*fold01*/
@@ -292,8 +298,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(ctl, ifr-ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(ctl, ifr-ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 sc-lmc_media-set_circuit_type(sc, ctl.circuit_type);
 sc-ictl.circuit_type = ctl.circuit_type;
 ret = 0;
@@ -318,12 +326,15 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 #ifdef DEBUG
 case LMCIOCDUMPEVENTLOG:
-if (copy_to_user(ifr-ifr_data, lmcEventLogIndex, sizeof (u32)))
-return -EFAULT;
+   if (copy_to_user(ifr-ifr_data, lmcEventLogIndex, sizeof(u32))) {
+   ret = -EFAULT;
+   break;
+   }
 if (copy_to_user(ifr-ifr_data + sizeof (u32), lmcEventLogBuf, sizeof 
(lmcEventLogBuf)))
-return -EFAULT;
+   ret = -EFAULT;
+   else
+   ret = 0;
 
-ret = 0;
 break;
 #endif /* end ifdef _DBG_EVENTLOG */
 case LMCIOCT1CONTROL: /*fold01*/
@@ -346,8 +357,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  */
 netif_stop_queue(dev);
 
-if (copy_from_user(xc, ifr-ifr_data, sizeof (struct 
lmc_xilinx_control

Re: [PATCH] several returns before unlocking in lmc_ioctl

2007-10-30 Thread Kristof Provost
On 2007-10-30 20:15:12 (+0100), Roel Kluin [EMAIL PROTECTED] wrote:
 Kristof Provost wrote:
  I think you have an extra curly brace there. It breaks compile on my
  system.
 
 You are right. thanks for notifying me and sorry for the trouble.
 please revert my patch (b463d40cdc436a12799a60a1d6ff1941a70a5bb6)
 
 and try instead:
This seems to compile just fine. I'm afraid I can't test it though. I
don't actually have that hardware. I mistakingly left it turned on, so I
noticed the compile error.

Kristof



pgpJRZOoa0KHW.pgp
Description: PGP signature


Re: [PATCH] several returns before unlocking in lmc_ioctl

2007-10-22 Thread Roel Kluin
I think we should keep the lmc_tracing. Use this patch instead.

--
Several returns before unlocking in lmc_ioctl

Signed-off-by: Roel Kluin <[EMAIL PROTECTED]>
---
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index 5ea8772..64eb578 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -142,9 +142,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  * To date internally, just copy this out to the user.
  */
 case LMCIOCGINFO: /*fold01*/
-if (copy_to_user(ifr->ifr_data, >ictl, sizeof (lmc_ctl_t)))
-return -EFAULT;
-ret = 0;
+   if (copy_to_user(ifr->ifr_data, >ictl, sizeof(lmc_ctl_t)))
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCSINFO: /*fold01*/
@@ -159,8 +160,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(, ifr->ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 sc->lmc_media->set_status (sc, );
 
@@ -190,8 +193,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
break;
}
 
-   if (copy_from_user(_type, ifr->ifr_data, sizeof(u_int16_t)))
-return -EFAULT;
+   if (copy_from_user(_type, ifr->ifr_data, sizeof(u_int16_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 
if (new_type == old_type)
@@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
 
 if (copy_to_user(ifr->ifr_data, >lmc_xinfo,
- sizeof (struct lmc_xinfo)))
-return -EFAULT;
-ret = 0;
+   sizeof(struct lmc_xinfo))) {
+   ret = -EFAULT;
+   else
+   ret = 0;
 
 break;
 
@@ -262,9 +268,9 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 if (copy_to_user(ifr->ifr_data, >stats,
  sizeof (struct lmc_statistics)))
-return -EFAULT;
-
-ret = 0;
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCCLEARLMCSTATS: /*fold01*/
@@ -292,8 +298,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(, ifr->ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
 sc->ictl.circuit_type = ctl.circuit_type;
 ret = 0;
@@ -318,12 +326,15 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 #ifdef DEBUG
 case LMCIOCDUMPEVENTLOG:
-if (copy_to_user(ifr->ifr_data, , sizeof (u32)))
-return -EFAULT;
+   if (copy_to_user(ifr->ifr_data, , sizeof(u32))) {
+   ret = -EFAULT;
+   break;
+   }
 if (copy_to_user(ifr->ifr_data + sizeof (u32), lmcEventLogBuf, sizeof 
(lmcEventLogBuf)))
-return -EFAULT;
+   ret = -EFAULT;
+   else
+   ret = 0;
 
-ret = 0;
 break;
 #endif /* end ifdef _DBG_EVENTLOG */
 case LMCIOCT1CONTROL: /*fold01*/
@@ -346,8 +357,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  */
 netif_stop_queue(dev);
 
-if (copy_from_user(, ifr->ifr_data, sizeof (struct 
lmc_xilinx_control)))
-return -EFAULT;
+   if (copy_from_user(, ifr->ifr_data, sizeof(struct 
lmc_xilinx_control))) {
+   ret = -EFAULT;
+   break;
+   }
 switch(xc.command){
 case lmc_xilinx_reset: /*fold02*/
 {

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] several returns before unlocking in lmc_ioctl

2007-10-22 Thread Roel Kluin
Several returns before unlocking in lmc_ioctl

Signed-off-by: Roel Kluin <[EMAIL PROTECTED]>
---
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index 5ea8772..af7b3e4 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -142,9 +142,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  * To date internally, just copy this out to the user.
  */
 case LMCIOCGINFO: /*fold01*/
-if (copy_to_user(ifr->ifr_data, >ictl, sizeof (lmc_ctl_t)))
-return -EFAULT;
-ret = 0;
+   if (copy_to_user(ifr->ifr_data, >ictl, sizeof(lmc_ctl_t)))
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCSINFO: /*fold01*/
@@ -159,8 +160,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(, ifr->ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 sc->lmc_media->set_status (sc, );
 
@@ -190,8 +193,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
break;
}
 
-   if (copy_from_user(_type, ifr->ifr_data, sizeof(u_int16_t)))
-return -EFAULT;
+   if (copy_from_user(_type, ifr->ifr_data, sizeof(u_int16_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 
if (new_type == old_type)
@@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
 
 if (copy_to_user(ifr->ifr_data, >lmc_xinfo,
- sizeof (struct lmc_xinfo)))
-return -EFAULT;
-ret = 0;
+   sizeof(struct lmc_xinfo))) {
+   ret = -EFAULT;
+   else
+   ret = 0;
 
 break;
 
@@ -262,9 +268,9 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 if (copy_to_user(ifr->ifr_data, >stats,
  sizeof (struct lmc_statistics)))
-return -EFAULT;
-
-ret = 0;
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCCLEARLMCSTATS: /*fold01*/
@@ -292,8 +298,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(, ifr->ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
 sc->ictl.circuit_type = ctl.circuit_type;
 ret = 0;
@@ -318,12 +326,15 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 #ifdef DEBUG
 case LMCIOCDUMPEVENTLOG:
-if (copy_to_user(ifr->ifr_data, , sizeof (u32)))
-return -EFAULT;
+   if (copy_to_user(ifr->ifr_data, , sizeof(u32))) {
+   ret = -EFAULT;
+   break;
+   }
 if (copy_to_user(ifr->ifr_data + sizeof (u32), lmcEventLogBuf, sizeof 
(lmcEventLogBuf)))
-return -EFAULT;
+   ret = -EFAULT;
+   else
+   ret = 0;
 
-ret = 0;
 break;
 #endif /* end ifdef _DBG_EVENTLOG */
 case LMCIOCT1CONTROL: /*fold01*/
@@ -346,8 +357,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  */
 netif_stop_queue(dev);
 
-if (copy_from_user(, ifr->ifr_data, sizeof (struct 
lmc_xilinx_control)))
-return -EFAULT;
+   if (copy_from_user(, ifr->ifr_data, sizeof(struct 
lmc_xilinx_control))) {
+   ret = -EFAULT;
+   break;
+   }
 switch(xc.command){
 case lmc_xilinx_reset: /*fold02*/
 {
@@ -618,8 +631,8 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 }
 
 spin_unlock_irqrestore(>lmc_lock, flags); /*fold01*/
-
-lmc_trace(dev, "lmc_ioctl out");
+if (ret >= 0)
+   lmc_trace(dev, "lmc_ioctl out");
 
 return ret;
 }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] several returns before unlocking in lmc_ioctl

2007-10-22 Thread Roel Kluin
Several returns before unlocking in lmc_ioctl

Signed-off-by: Roel Kluin [EMAIL PROTECTED]
---
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index 5ea8772..af7b3e4 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -142,9 +142,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  * To date internally, just copy this out to the user.
  */
 case LMCIOCGINFO: /*fold01*/
-if (copy_to_user(ifr-ifr_data, sc-ictl, sizeof (lmc_ctl_t)))
-return -EFAULT;
-ret = 0;
+   if (copy_to_user(ifr-ifr_data, sc-ictl, sizeof(lmc_ctl_t)))
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCSINFO: /*fold01*/
@@ -159,8 +160,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(ctl, ifr-ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(ctl, ifr-ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 sc-lmc_media-set_status (sc, ctl);
 
@@ -190,8 +193,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
break;
}
 
-   if (copy_from_user(new_type, ifr-ifr_data, sizeof(u_int16_t)))
-return -EFAULT;
+   if (copy_from_user(new_type, ifr-ifr_data, sizeof(u_int16_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 
if (new_type == old_type)
@@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 sc-lmc_xinfo.Magic1 = 0xDEADBEEF;
 
 if (copy_to_user(ifr-ifr_data, sc-lmc_xinfo,
- sizeof (struct lmc_xinfo)))
-return -EFAULT;
-ret = 0;
+   sizeof(struct lmc_xinfo))) {
+   ret = -EFAULT;
+   else
+   ret = 0;
 
 break;
 
@@ -262,9 +268,9 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 if (copy_to_user(ifr-ifr_data, sc-stats,
  sizeof (struct lmc_statistics)))
-return -EFAULT;
-
-ret = 0;
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCCLEARLMCSTATS: /*fold01*/
@@ -292,8 +298,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(ctl, ifr-ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(ctl, ifr-ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 sc-lmc_media-set_circuit_type(sc, ctl.circuit_type);
 sc-ictl.circuit_type = ctl.circuit_type;
 ret = 0;
@@ -318,12 +326,15 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 #ifdef DEBUG
 case LMCIOCDUMPEVENTLOG:
-if (copy_to_user(ifr-ifr_data, lmcEventLogIndex, sizeof (u32)))
-return -EFAULT;
+   if (copy_to_user(ifr-ifr_data, lmcEventLogIndex, sizeof(u32))) {
+   ret = -EFAULT;
+   break;
+   }
 if (copy_to_user(ifr-ifr_data + sizeof (u32), lmcEventLogBuf, sizeof 
(lmcEventLogBuf)))
-return -EFAULT;
+   ret = -EFAULT;
+   else
+   ret = 0;
 
-ret = 0;
 break;
 #endif /* end ifdef _DBG_EVENTLOG */
 case LMCIOCT1CONTROL: /*fold01*/
@@ -346,8 +357,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  */
 netif_stop_queue(dev);
 
-if (copy_from_user(xc, ifr-ifr_data, sizeof (struct 
lmc_xilinx_control)))
-return -EFAULT;
+   if (copy_from_user(xc, ifr-ifr_data, sizeof(struct 
lmc_xilinx_control))) {
+   ret = -EFAULT;
+   break;
+   }
 switch(xc.command){
 case lmc_xilinx_reset: /*fold02*/
 {
@@ -618,8 +631,8 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 }
 
 spin_unlock_irqrestore(sc-lmc_lock, flags); /*fold01*/
-
-lmc_trace(dev, lmc_ioctl out);
+if (ret = 0)
+   lmc_trace(dev, lmc_ioctl out);
 
 return ret;
 }
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] several returns before unlocking in lmc_ioctl

2007-10-22 Thread Roel Kluin
I think we should keep the lmc_tracing. Use this patch instead.

--
Several returns before unlocking in lmc_ioctl

Signed-off-by: Roel Kluin [EMAIL PROTECTED]
---
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index 5ea8772..64eb578 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -142,9 +142,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  * To date internally, just copy this out to the user.
  */
 case LMCIOCGINFO: /*fold01*/
-if (copy_to_user(ifr-ifr_data, sc-ictl, sizeof (lmc_ctl_t)))
-return -EFAULT;
-ret = 0;
+   if (copy_to_user(ifr-ifr_data, sc-ictl, sizeof(lmc_ctl_t)))
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCSINFO: /*fold01*/
@@ -159,8 +160,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(ctl, ifr-ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(ctl, ifr-ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 sc-lmc_media-set_status (sc, ctl);
 
@@ -190,8 +193,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
break;
}
 
-   if (copy_from_user(new_type, ifr-ifr_data, sizeof(u_int16_t)))
-return -EFAULT;
+   if (copy_from_user(new_type, ifr-ifr_data, sizeof(u_int16_t))) {
+   ret = -EFAULT;
+   break;
+   }
 
 
if (new_type == old_type)
@@ -229,9 +234,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 sc-lmc_xinfo.Magic1 = 0xDEADBEEF;
 
 if (copy_to_user(ifr-ifr_data, sc-lmc_xinfo,
- sizeof (struct lmc_xinfo)))
-return -EFAULT;
-ret = 0;
+   sizeof(struct lmc_xinfo))) {
+   ret = -EFAULT;
+   else
+   ret = 0;
 
 break;
 
@@ -262,9 +268,9 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 if (copy_to_user(ifr-ifr_data, sc-stats,
  sizeof (struct lmc_statistics)))
-return -EFAULT;
-
-ret = 0;
+   ret = -EFAULT;
+   else
+   ret = 0;
 break;
 
 case LMCIOCCLEARLMCSTATS: /*fold01*/
@@ -292,8 +298,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 break;
 }
 
-if (copy_from_user(ctl, ifr-ifr_data, sizeof (lmc_ctl_t)))
-return -EFAULT;
+   if (copy_from_user(ctl, ifr-ifr_data, sizeof(lmc_ctl_t))) {
+   ret = -EFAULT;
+   break;
+   }
 sc-lmc_media-set_circuit_type(sc, ctl.circuit_type);
 sc-ictl.circuit_type = ctl.circuit_type;
 ret = 0;
@@ -318,12 +326,15 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
 
 #ifdef DEBUG
 case LMCIOCDUMPEVENTLOG:
-if (copy_to_user(ifr-ifr_data, lmcEventLogIndex, sizeof (u32)))
-return -EFAULT;
+   if (copy_to_user(ifr-ifr_data, lmcEventLogIndex, sizeof(u32))) {
+   ret = -EFAULT;
+   break;
+   }
 if (copy_to_user(ifr-ifr_data + sizeof (u32), lmcEventLogBuf, sizeof 
(lmcEventLogBuf)))
-return -EFAULT;
+   ret = -EFAULT;
+   else
+   ret = 0;
 
-ret = 0;
 break;
 #endif /* end ifdef _DBG_EVENTLOG */
 case LMCIOCT1CONTROL: /*fold01*/
@@ -346,8 +357,10 @@ int lmc_ioctl (struct net_device *dev, struct ifreq *ifr, 
int cmd) /*fold00*/
  */
 netif_stop_queue(dev);
 
-if (copy_from_user(xc, ifr-ifr_data, sizeof (struct 
lmc_xilinx_control)))
-return -EFAULT;
+   if (copy_from_user(xc, ifr-ifr_data, sizeof(struct 
lmc_xilinx_control))) {
+   ret = -EFAULT;
+   break;
+   }
 switch(xc.command){
 case lmc_xilinx_reset: /*fold02*/
 {

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/