Re: [PATCH] several returns before unlocking in lmc_ioctl
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
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
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
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
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
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
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
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
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
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/