Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread Julia Lawall


On Mon, 19 May 2014, Sergei Shtylyov wrote:

> Hello.
>
> On 19-05-2014 8:31, Julia Lawall wrote:
>
> > From: Julia Lawall 
>
> > Delete unnecessary local variable whose value is always 0 and that hides
> > the fact that the result is always 0.
>
> > A simplified version of the semantic patch that fixes this problem is as
> > follows: (http://coccinelle.lip6.fr/)
>
> > // 
> > @r exists@
> > local idexpression ret;
> > expression e;
> > position p;
> > @@
> >
> > -ret = 0;
> > ... when != ret = e
> > return
> > - ret
> > + 0
> >;
> > // 
>
> > Signed-off-by: Julia Lawall 
>
> > ---
> > Alternatively, was an error code intended in the bad length case, as is
> > done in process_brxed_802_11_packet?
>
> >   drivers/net/wireless/libertas/rx.c |7 ++-
> >   1 file changed, 2 insertions(+), 5 deletions(-)
>
> > diff --git a/drivers/net/wireless/libertas/rx.c
> > b/drivers/net/wireless/libertas/rx.c
> > index c7366b0..807c5b8 100644
> > --- a/drivers/net/wireless/libertas/rx.c
> > +++ b/drivers/net/wireless/libertas/rx.c
> [...]
> > @@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv,
> > struct sk_buff *skb)
> > else
> > netif_rx_ni(skb);
> >
> > -   ret = 0;
> >   done:
> > -   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", ret);
> > -   return ret;
> > +   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", 0);
>
>Why not just "ret 0"?

Oops, I won't make any change here, because Dan Williams has proposed
another patch that makes the ret variable useful.

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


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread Julia Lawall


On Mon, 19 May 2014, Sergei Shtylyov wrote:

> Hello.
>
> On 19-05-2014 8:31, Julia Lawall wrote:
>
> > From: Julia Lawall 
>
> > Delete unnecessary local variable whose value is always 0 and that hides
> > the fact that the result is always 0.
>
> > A simplified version of the semantic patch that fixes this problem is as
> > follows: (http://coccinelle.lip6.fr/)
>
> > // 
> > @r exists@
> > local idexpression ret;
> > expression e;
> > position p;
> > @@
> >
> > -ret = 0;
> > ... when != ret = e
> > return
> > - ret
> > + 0
> >;
> > // 
>
> > Signed-off-by: Julia Lawall 
>
> > ---
> > Alternatively, was an error code intended in the bad length case, as is
> > done in process_brxed_802_11_packet?
>
> >   drivers/net/wireless/libertas/rx.c |7 ++-
> >   1 file changed, 2 insertions(+), 5 deletions(-)
>
> > diff --git a/drivers/net/wireless/libertas/rx.c
> > b/drivers/net/wireless/libertas/rx.c
> > index c7366b0..807c5b8 100644
> > --- a/drivers/net/wireless/libertas/rx.c
> > +++ b/drivers/net/wireless/libertas/rx.c
> [...]
> > @@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv,
> > struct sk_buff *skb)
> > else
> > netif_rx_ni(skb);
> >
> > -   ret = 0;
> >   done:
> > -   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", ret);
> > -   return ret;
> > +   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", 0);
>
>Why not just "ret 0"?

OK, I wasn't sure if it was useful to keep the same number of arguments.
But I will update it, since from the definition of lbs_deb_leave_args it
seems ok.

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


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread Dan Williams
On Mon, 2014-05-19 at 16:45 +0400, Sergei Shtylyov wrote:
> Hello.
> 
> On 19-05-2014 8:31, Julia Lawall wrote:
> 
> > From: Julia Lawall 
> 
> > Delete unnecessary local variable whose value is always 0 and that hides
> > the fact that the result is always 0.
> 
> > A simplified version of the semantic patch that fixes this problem is as
> > follows: (http://coccinelle.lip6.fr/)
> 
> > // 
> > @r exists@
> > local idexpression ret;
> > expression e;
> > position p;
> > @@
> >
> > -ret = 0;
> > ... when != ret = e
> > return
> > - ret
> > + 0
> >;
> > // 
> 
> > Signed-off-by: Julia Lawall 
> 
> > ---
> > Alternatively, was an error code intended in the bad length case, as is
> > done in process_brxed_802_11_packet?
> 
> >   drivers/net/wireless/libertas/rx.c |7 ++-
> >   1 file changed, 2 insertions(+), 5 deletions(-)
> 
> > diff --git a/drivers/net/wireless/libertas/rx.c 
> > b/drivers/net/wireless/libertas/rx.c
> > index c7366b0..807c5b8 100644
> > --- a/drivers/net/wireless/libertas/rx.c
> > +++ b/drivers/net/wireless/libertas/rx.c
> [...]
> > @@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
> > struct sk_buff *skb)
> > else
> > netif_rx_ni(skb);
> >
> > -   ret = 0;
> >   done:
> > -   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", ret);
> > -   return ret;
> > +   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", 0);
> 
> Why not just "ret 0"?

I think instead we want:

diff --git a/drivers/net/wireless/libertas/rx.c 
b/drivers/net/wireless/libertas/rx.c
index c7366b0..e446fed 100644
--- a/drivers/net/wireless/libertas/rx.c
+++ b/drivers/net/wireless/libertas/rx.c
@@ -67,30 +67,32 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
struct sk_buff *skb)
 
lbs_deb_enter(LBS_DEB_RX);
 
BUG_ON(!skb);
 
skb->ip_summed = CHECKSUM_NONE;
 
-   if (priv->wdev->iftype == NL80211_IFTYPE_MONITOR)
-   return process_rxed_802_11_packet(priv, skb);
+   if (priv->wdev->iftype == NL80211_IFTYPE_MONITOR) {
+   ret = process_rxed_802_11_packet(priv, skb);
+   goto done;
+   }
 
p_rx_pd = (struct rxpd *) skb->data;
p_rx_pkt = (struct rxpackethdr *) ((u8 *)p_rx_pd +
le32_to_cpu(p_rx_pd->pkt_ptr));
 
dev = lbs_mesh_set_dev(priv, dev, p_rx_pd);
 
lbs_deb_hex(LBS_DEB_RX, "RX Data: Before chop rxpd", skb->data,
 min_t(unsigned int, skb->len, 100));
 
if (skb->len < (ETH_HLEN + 8 + sizeof(struct rxpd))) {
lbs_deb_rx("rx err: frame received with bad length\n");
dev->stats.rx_length_errors++;
-   ret = 0;
+   ret = -EINVAL;
dev_kfree_skb(skb);
goto done;
}
 
lbs_deb_rx("rx data: skb->len - pkt_ptr = %d-%zd = %zd\n",
skb->len, (size_t)le32_to_cpu(p_rx_pd->pkt_ptr),
skb->len - (size_t)le32_to_cpu(p_rx_pd->pkt_ptr));

Since that (a) preserves the enter/leave balance when monitor mode is
enabled, and (b) fixes the return code that has been 0 since the driver
was added to the tree in early 2007.  Dave Woodhouse fixed the
process_rxed_802_11_packet() return code for EINVAL case in commit
7bf02c29 from late 2007, and I think the normal codepath should do
EINVAL too.  (though it turns out nothing cares about the return code
anyway, we should still fix it)

Dan


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


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread Sergei Shtylyov

Hello.

On 19-05-2014 8:31, Julia Lawall wrote:


From: Julia Lawall 



Delete unnecessary local variable whose value is always 0 and that hides
the fact that the result is always 0.



A simplified version of the semantic patch that fixes this problem is as
follows: (http://coccinelle.lip6.fr/)



// 
@r exists@
local idexpression ret;
expression e;
position p;
@@

-ret = 0;
... when != ret = e
return
- ret
+ 0
   ;
// 



Signed-off-by: Julia Lawall 



---
Alternatively, was an error code intended in the bad length case, as is
done in process_brxed_802_11_packet?



  drivers/net/wireless/libertas/rx.c |7 ++-
  1 file changed, 2 insertions(+), 5 deletions(-)



diff --git a/drivers/net/wireless/libertas/rx.c 
b/drivers/net/wireless/libertas/rx.c
index c7366b0..807c5b8 100644
--- a/drivers/net/wireless/libertas/rx.c
+++ b/drivers/net/wireless/libertas/rx.c

[...]

@@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
struct sk_buff *skb)
else
netif_rx_ni(skb);

-   ret = 0;
  done:
-   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", ret);
-   return ret;
+   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", 0);


   Why not just "ret 0"?


+   return 0;


WBR, Sergei

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


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread walter harms


Am 19.05.2014 06:31, schrieb Julia Lawall:
> From: Julia Lawall 
> 
> Delete unnecessary local variable whose value is always 0 and that hides
> the fact that the result is always 0.
> 
> A simplified version of the semantic patch that fixes this problem is as
> follows: (http://coccinelle.lip6.fr/)
> 
> // 
> @r exists@
> local idexpression ret;
> expression e;
> position p;
> @@
> 
> -ret = 0;
> ... when != ret = e
> return 
> - ret
> + 0
>   ;
> // 
> 
> Signed-off-by: Julia Lawall 
> 
> ---
> Alternatively, was an error code intended in the bad length case, as is
> done in process_brxed_802_11_packet?
> 
>  drivers/net/wireless/libertas/rx.c |7 ++-
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/wireless/libertas/rx.c 
> b/drivers/net/wireless/libertas/rx.c
> index c7366b0..807c5b8 100644
> --- a/drivers/net/wireless/libertas/rx.c
> +++ b/drivers/net/wireless/libertas/rx.c
> @@ -55,7 +55,6 @@ static int process_rxed_802_11_packet(struct lbs_private 
> *priv,
>   */
>  int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
>  {
> - int ret = 0;
>   struct net_device *dev = priv->dev;
>   struct rxpackethdr *p_rx_pkt;
>   struct rxpd *p_rx_pd;
> @@ -86,7 +85,6 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
> struct sk_buff *skb)
>   if (skb->len < (ETH_HLEN + 8 + sizeof(struct rxpd))) {
>   lbs_deb_rx("rx err: frame received with bad length\n");
>   dev->stats.rx_length_errors++;
> - ret = 0;
>   dev_kfree_skb(skb);
>   goto done;
>   }
> @@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
> struct sk_buff *skb)
>   else
>   netif_rx_ni(skb);
>  
> - ret = 0;
>  done:
> - lbs_deb_leave_args(LBS_DEB_RX, "ret %d", ret);
> - return ret;
> + lbs_deb_leave_args(LBS_DEB_RX, "ret %d", 0);
> + return 0;
>  }

i guess lbs_deb_leave_args() is obsolet now.

re,
 wh


>  EXPORT_SYMBOL_GPL(lbs_process_rxed_packet);
>  
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread Julia Lawall


On Mon, 19 May 2014, Sergei Shtylyov wrote:

 Hello.

 On 19-05-2014 8:31, Julia Lawall wrote:

  From: Julia Lawall julia.law...@lip6.fr

  Delete unnecessary local variable whose value is always 0 and that hides
  the fact that the result is always 0.

  A simplified version of the semantic patch that fixes this problem is as
  follows: (http://coccinelle.lip6.fr/)

  // smpl
  @r exists@
  local idexpression ret;
  expression e;
  position p;
  @@
 
  -ret = 0;
  ... when != ret = e
  return
  - ret
  + 0
 ;
  // /smpl

  Signed-off-by: Julia Lawall julia.law...@lip6.fr

  ---
  Alternatively, was an error code intended in the bad length case, as is
  done in process_brxed_802_11_packet?

drivers/net/wireless/libertas/rx.c |7 ++-
1 file changed, 2 insertions(+), 5 deletions(-)

  diff --git a/drivers/net/wireless/libertas/rx.c
  b/drivers/net/wireless/libertas/rx.c
  index c7366b0..807c5b8 100644
  --- a/drivers/net/wireless/libertas/rx.c
  +++ b/drivers/net/wireless/libertas/rx.c
 [...]
  @@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv,
  struct sk_buff *skb)
  else
  netif_rx_ni(skb);
 
  -   ret = 0;
done:
  -   lbs_deb_leave_args(LBS_DEB_RX, ret %d, ret);
  -   return ret;
  +   lbs_deb_leave_args(LBS_DEB_RX, ret %d, 0);

Why not just ret 0?

OK, I wasn't sure if it was useful to keep the same number of arguments.
But I will update it, since from the definition of lbs_deb_leave_args it
seems ok.

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


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread Julia Lawall


On Mon, 19 May 2014, Sergei Shtylyov wrote:

 Hello.

 On 19-05-2014 8:31, Julia Lawall wrote:

  From: Julia Lawall julia.law...@lip6.fr

  Delete unnecessary local variable whose value is always 0 and that hides
  the fact that the result is always 0.

  A simplified version of the semantic patch that fixes this problem is as
  follows: (http://coccinelle.lip6.fr/)

  // smpl
  @r exists@
  local idexpression ret;
  expression e;
  position p;
  @@
 
  -ret = 0;
  ... when != ret = e
  return
  - ret
  + 0
 ;
  // /smpl

  Signed-off-by: Julia Lawall julia.law...@lip6.fr

  ---
  Alternatively, was an error code intended in the bad length case, as is
  done in process_brxed_802_11_packet?

drivers/net/wireless/libertas/rx.c |7 ++-
1 file changed, 2 insertions(+), 5 deletions(-)

  diff --git a/drivers/net/wireless/libertas/rx.c
  b/drivers/net/wireless/libertas/rx.c
  index c7366b0..807c5b8 100644
  --- a/drivers/net/wireless/libertas/rx.c
  +++ b/drivers/net/wireless/libertas/rx.c
 [...]
  @@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv,
  struct sk_buff *skb)
  else
  netif_rx_ni(skb);
 
  -   ret = 0;
done:
  -   lbs_deb_leave_args(LBS_DEB_RX, ret %d, ret);
  -   return ret;
  +   lbs_deb_leave_args(LBS_DEB_RX, ret %d, 0);

Why not just ret 0?

Oops, I won't make any change here, because Dan Williams has proposed
another patch that makes the ret variable useful.

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


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread walter harms


Am 19.05.2014 06:31, schrieb Julia Lawall:
 From: Julia Lawall julia.law...@lip6.fr
 
 Delete unnecessary local variable whose value is always 0 and that hides
 the fact that the result is always 0.
 
 A simplified version of the semantic patch that fixes this problem is as
 follows: (http://coccinelle.lip6.fr/)
 
 // smpl
 @r exists@
 local idexpression ret;
 expression e;
 position p;
 @@
 
 -ret = 0;
 ... when != ret = e
 return 
 - ret
 + 0
   ;
 // /smpl
 
 Signed-off-by: Julia Lawall julia.law...@lip6.fr
 
 ---
 Alternatively, was an error code intended in the bad length case, as is
 done in process_brxed_802_11_packet?
 
  drivers/net/wireless/libertas/rx.c |7 ++-
  1 file changed, 2 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/net/wireless/libertas/rx.c 
 b/drivers/net/wireless/libertas/rx.c
 index c7366b0..807c5b8 100644
 --- a/drivers/net/wireless/libertas/rx.c
 +++ b/drivers/net/wireless/libertas/rx.c
 @@ -55,7 +55,6 @@ static int process_rxed_802_11_packet(struct lbs_private 
 *priv,
   */
  int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
  {
 - int ret = 0;
   struct net_device *dev = priv-dev;
   struct rxpackethdr *p_rx_pkt;
   struct rxpd *p_rx_pd;
 @@ -86,7 +85,6 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
 struct sk_buff *skb)
   if (skb-len  (ETH_HLEN + 8 + sizeof(struct rxpd))) {
   lbs_deb_rx(rx err: frame received with bad length\n);
   dev-stats.rx_length_errors++;
 - ret = 0;
   dev_kfree_skb(skb);
   goto done;
   }
 @@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
 struct sk_buff *skb)
   else
   netif_rx_ni(skb);
  
 - ret = 0;
  done:
 - lbs_deb_leave_args(LBS_DEB_RX, ret %d, ret);
 - return ret;
 + lbs_deb_leave_args(LBS_DEB_RX, ret %d, 0);
 + return 0;
  }

i guess lbs_deb_leave_args() is obsolet now.

re,
 wh


  EXPORT_SYMBOL_GPL(lbs_process_rxed_packet);
  
 
 --
 To unsubscribe from this list: send the line unsubscribe kernel-janitors in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread Sergei Shtylyov

Hello.

On 19-05-2014 8:31, Julia Lawall wrote:


From: Julia Lawall julia.law...@lip6.fr



Delete unnecessary local variable whose value is always 0 and that hides
the fact that the result is always 0.



A simplified version of the semantic patch that fixes this problem is as
follows: (http://coccinelle.lip6.fr/)



// smpl
@r exists@
local idexpression ret;
expression e;
position p;
@@

-ret = 0;
... when != ret = e
return
- ret
+ 0
   ;
// /smpl



Signed-off-by: Julia Lawall julia.law...@lip6.fr



---
Alternatively, was an error code intended in the bad length case, as is
done in process_brxed_802_11_packet?



  drivers/net/wireless/libertas/rx.c |7 ++-
  1 file changed, 2 insertions(+), 5 deletions(-)



diff --git a/drivers/net/wireless/libertas/rx.c 
b/drivers/net/wireless/libertas/rx.c
index c7366b0..807c5b8 100644
--- a/drivers/net/wireless/libertas/rx.c
+++ b/drivers/net/wireless/libertas/rx.c

[...]

@@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
struct sk_buff *skb)
else
netif_rx_ni(skb);

-   ret = 0;
  done:
-   lbs_deb_leave_args(LBS_DEB_RX, ret %d, ret);
-   return ret;
+   lbs_deb_leave_args(LBS_DEB_RX, ret %d, 0);


   Why not just ret 0?


+   return 0;


WBR, Sergei

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


Re: [PATCH 1/13] libertas: make return of 0 explicit

2014-05-19 Thread Dan Williams
On Mon, 2014-05-19 at 16:45 +0400, Sergei Shtylyov wrote:
 Hello.
 
 On 19-05-2014 8:31, Julia Lawall wrote:
 
  From: Julia Lawall julia.law...@lip6.fr
 
  Delete unnecessary local variable whose value is always 0 and that hides
  the fact that the result is always 0.
 
  A simplified version of the semantic patch that fixes this problem is as
  follows: (http://coccinelle.lip6.fr/)
 
  // smpl
  @r exists@
  local idexpression ret;
  expression e;
  position p;
  @@
 
  -ret = 0;
  ... when != ret = e
  return
  - ret
  + 0
 ;
  // /smpl
 
  Signed-off-by: Julia Lawall julia.law...@lip6.fr
 
  ---
  Alternatively, was an error code intended in the bad length case, as is
  done in process_brxed_802_11_packet?
 
drivers/net/wireless/libertas/rx.c |7 ++-
1 file changed, 2 insertions(+), 5 deletions(-)
 
  diff --git a/drivers/net/wireless/libertas/rx.c 
  b/drivers/net/wireless/libertas/rx.c
  index c7366b0..807c5b8 100644
  --- a/drivers/net/wireless/libertas/rx.c
  +++ b/drivers/net/wireless/libertas/rx.c
 [...]
  @@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
  struct sk_buff *skb)
  else
  netif_rx_ni(skb);
 
  -   ret = 0;
done:
  -   lbs_deb_leave_args(LBS_DEB_RX, ret %d, ret);
  -   return ret;
  +   lbs_deb_leave_args(LBS_DEB_RX, ret %d, 0);
 
 Why not just ret 0?

I think instead we want:

diff --git a/drivers/net/wireless/libertas/rx.c 
b/drivers/net/wireless/libertas/rx.c
index c7366b0..e446fed 100644
--- a/drivers/net/wireless/libertas/rx.c
+++ b/drivers/net/wireless/libertas/rx.c
@@ -67,30 +67,32 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
struct sk_buff *skb)
 
lbs_deb_enter(LBS_DEB_RX);
 
BUG_ON(!skb);
 
skb-ip_summed = CHECKSUM_NONE;
 
-   if (priv-wdev-iftype == NL80211_IFTYPE_MONITOR)
-   return process_rxed_802_11_packet(priv, skb);
+   if (priv-wdev-iftype == NL80211_IFTYPE_MONITOR) {
+   ret = process_rxed_802_11_packet(priv, skb);
+   goto done;
+   }
 
p_rx_pd = (struct rxpd *) skb-data;
p_rx_pkt = (struct rxpackethdr *) ((u8 *)p_rx_pd +
le32_to_cpu(p_rx_pd-pkt_ptr));
 
dev = lbs_mesh_set_dev(priv, dev, p_rx_pd);
 
lbs_deb_hex(LBS_DEB_RX, RX Data: Before chop rxpd, skb-data,
 min_t(unsigned int, skb-len, 100));
 
if (skb-len  (ETH_HLEN + 8 + sizeof(struct rxpd))) {
lbs_deb_rx(rx err: frame received with bad length\n);
dev-stats.rx_length_errors++;
-   ret = 0;
+   ret = -EINVAL;
dev_kfree_skb(skb);
goto done;
}
 
lbs_deb_rx(rx data: skb-len - pkt_ptr = %d-%zd = %zd\n,
skb-len, (size_t)le32_to_cpu(p_rx_pd-pkt_ptr),
skb-len - (size_t)le32_to_cpu(p_rx_pd-pkt_ptr));

Since that (a) preserves the enter/leave balance when monitor mode is
enabled, and (b) fixes the return code that has been 0 since the driver
was added to the tree in early 2007.  Dave Woodhouse fixed the
process_rxed_802_11_packet() return code for EINVAL case in commit
7bf02c29 from late 2007, and I think the normal codepath should do
EINVAL too.  (though it turns out nothing cares about the return code
anyway, we should still fix it)

Dan


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


[PATCH 1/13] libertas: make return of 0 explicit

2014-05-18 Thread Julia Lawall
From: Julia Lawall 

Delete unnecessary local variable whose value is always 0 and that hides
the fact that the result is always 0.

A simplified version of the semantic patch that fixes this problem is as
follows: (http://coccinelle.lip6.fr/)

// 
@r exists@
local idexpression ret;
expression e;
position p;
@@

-ret = 0;
... when != ret = e
return 
- ret
+ 0
  ;
// 

Signed-off-by: Julia Lawall 

---
Alternatively, was an error code intended in the bad length case, as is
done in process_brxed_802_11_packet?

 drivers/net/wireless/libertas/rx.c |7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/libertas/rx.c 
b/drivers/net/wireless/libertas/rx.c
index c7366b0..807c5b8 100644
--- a/drivers/net/wireless/libertas/rx.c
+++ b/drivers/net/wireless/libertas/rx.c
@@ -55,7 +55,6 @@ static int process_rxed_802_11_packet(struct lbs_private 
*priv,
  */
 int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
 {
-   int ret = 0;
struct net_device *dev = priv->dev;
struct rxpackethdr *p_rx_pkt;
struct rxpd *p_rx_pd;
@@ -86,7 +85,6 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct 
sk_buff *skb)
if (skb->len < (ETH_HLEN + 8 + sizeof(struct rxpd))) {
lbs_deb_rx("rx err: frame received with bad length\n");
dev->stats.rx_length_errors++;
-   ret = 0;
dev_kfree_skb(skb);
goto done;
}
@@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
struct sk_buff *skb)
else
netif_rx_ni(skb);
 
-   ret = 0;
 done:
-   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", ret);
-   return ret;
+   lbs_deb_leave_args(LBS_DEB_RX, "ret %d", 0);
+   return 0;
 }
 EXPORT_SYMBOL_GPL(lbs_process_rxed_packet);
 

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


[PATCH 1/13] libertas: make return of 0 explicit

2014-05-18 Thread Julia Lawall
From: Julia Lawall julia.law...@lip6.fr

Delete unnecessary local variable whose value is always 0 and that hides
the fact that the result is always 0.

A simplified version of the semantic patch that fixes this problem is as
follows: (http://coccinelle.lip6.fr/)

// smpl
@r exists@
local idexpression ret;
expression e;
position p;
@@

-ret = 0;
... when != ret = e
return 
- ret
+ 0
  ;
// /smpl

Signed-off-by: Julia Lawall julia.law...@lip6.fr

---
Alternatively, was an error code intended in the bad length case, as is
done in process_brxed_802_11_packet?

 drivers/net/wireless/libertas/rx.c |7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/libertas/rx.c 
b/drivers/net/wireless/libertas/rx.c
index c7366b0..807c5b8 100644
--- a/drivers/net/wireless/libertas/rx.c
+++ b/drivers/net/wireless/libertas/rx.c
@@ -55,7 +55,6 @@ static int process_rxed_802_11_packet(struct lbs_private 
*priv,
  */
 int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
 {
-   int ret = 0;
struct net_device *dev = priv-dev;
struct rxpackethdr *p_rx_pkt;
struct rxpd *p_rx_pd;
@@ -86,7 +85,6 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct 
sk_buff *skb)
if (skb-len  (ETH_HLEN + 8 + sizeof(struct rxpd))) {
lbs_deb_rx(rx err: frame received with bad length\n);
dev-stats.rx_length_errors++;
-   ret = 0;
dev_kfree_skb(skb);
goto done;
}
@@ -154,10 +152,9 @@ int lbs_process_rxed_packet(struct lbs_private *priv, 
struct sk_buff *skb)
else
netif_rx_ni(skb);
 
-   ret = 0;
 done:
-   lbs_deb_leave_args(LBS_DEB_RX, ret %d, ret);
-   return ret;
+   lbs_deb_leave_args(LBS_DEB_RX, ret %d, 0);
+   return 0;
 }
 EXPORT_SYMBOL_GPL(lbs_process_rxed_packet);
 

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