2016-06-21 08:27:18

by Alexander Aring

[permalink] [raw]
Subject: [PATCH bluetooth-next 1/2] 6lowpan: ndisc: fix double read unlock

This patch removes a double unlock case to accessing neighbour private
data.

Reported-by: Dan Carpenter <[email protected]>
Signed-off-by: Alexander Aring <[email protected]>
---
net/6lowpan/ndisc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/6lowpan/ndisc.c b/net/6lowpan/ndisc.c
index ae1d419..030504e 100644
--- a/net/6lowpan/ndisc.c
+++ b/net/6lowpan/ndisc.c
@@ -135,8 +135,9 @@ static int lowpan_ndisc_opt_addr_space(const struct net_device *dev,
read_unlock_bh(&neigh->lock);
addr_space += __ndisc_opt_addr_space(IEEE802154_SHORT_ADDR_LEN, 0);
*ha = ha_buf;
+ } else {
+ read_unlock_bh(&neigh->lock);
}
- read_unlock_bh(&neigh->lock);
break;
case NDISC_NEIGHBOUR_ADVERTISEMENT:
case NDISC_NEIGHBOUR_SOLICITATION:
--
2.9.0



2016-06-27 06:04:19

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH bluetooth-next 2/2] 6lowpan: ndisc: add missing 802.15.4 only check

Hi Alex,

> This patch adds a missing check to handle short address parsing for
> 802.15.4 6LoWPAN only.
>
> Signed-off-by: Alexander Aring <[email protected]>
> ---
> net/6lowpan/ndisc.c | 3 +++
> 1 file changed, 3 insertions(+)

patch has been applied to bluetooth-next tree.

Regards

Marcel


2016-06-27 06:03:54

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH bluetooth-next 1/2] 6lowpan: ndisc: fix double read unlock

Hi Alex,

> This patch removes a double unlock case to accessing neighbour private
> data.
>
> Reported-by: Dan Carpenter <[email protected]>
> Signed-off-by: Alexander Aring <[email protected]>
> ---
> net/6lowpan/ndisc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)

patch has been applied to bluetooth-next tree.

Regards

Marcel


2016-06-22 13:36:01

by Stefan Schmidt

[permalink] [raw]
Subject: Re: [PATCH bluetooth-next 2/2] 6lowpan: ndisc: add missing 802.15.4 only check

Hello.

On 21/06/16 10:27, Alexander Aring wrote:
> This patch adds a missing check to handle short address parsing for
> 802.15.4 6LoWPAN only.
>
> Signed-off-by: Alexander Aring <[email protected]>
> ---
> net/6lowpan/ndisc.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/net/6lowpan/ndisc.c b/net/6lowpan/ndisc.c
> index 030504e..79c5fa9 100644
> --- a/net/6lowpan/ndisc.c
> +++ b/net/6lowpan/ndisc.c
> @@ -47,6 +47,9 @@ static int lowpan_ndisc_parse_options(const struct net_device *dev,
> struct nd_opt_hdr *nd_opt,
> struct ndisc_options *ndopts)
> {
> + if (!lowpan_is_ll(dev, LOWPAN_LLTYPE_IEEE802154))
> + return 0;
> +
> switch (nd_opt->nd_opt_type) {
> case ND_OPT_SOURCE_LL_ADDR:
> case ND_OPT_TARGET_LL_ADDR:

Reviewed-by: Stefan Schmidt<[email protected]> regards Stefan Schmidt



2016-06-22 13:30:18

by Stefan Schmidt

[permalink] [raw]
Subject: Re: [PATCH bluetooth-next 1/2] 6lowpan: ndisc: fix double read unlock

Hello.

On 21/06/16 10:27, Alexander Aring wrote:
> This patch removes a double unlock case to accessing neighbour private
> data.
>
> Reported-by: Dan Carpenter <[email protected]>
> Signed-off-by: Alexander Aring <[email protected]>
> ---
> net/6lowpan/ndisc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/net/6lowpan/ndisc.c b/net/6lowpan/ndisc.c
> index ae1d419..030504e 100644
> --- a/net/6lowpan/ndisc.c
> +++ b/net/6lowpan/ndisc.c
> @@ -135,8 +135,9 @@ static int lowpan_ndisc_opt_addr_space(const struct net_device *dev,
> read_unlock_bh(&neigh->lock);
> addr_space += __ndisc_opt_addr_space(IEEE802154_SHORT_ADDR_LEN, 0);
> *ha = ha_buf;
> + } else {
> + read_unlock_bh(&neigh->lock);
> }
> - read_unlock_bh(&neigh->lock);
> break;
> case NDISC_NEIGHBOUR_ADVERTISEMENT:
> case NDISC_NEIGHBOUR_SOLICITATION:

Dan, thanks for finding this one!

Reviewed-by: Stefan Schmidt<[email protected]> regards Stefan Schmidt




2016-06-21 08:27:19

by Alexander Aring

[permalink] [raw]
Subject: [PATCH bluetooth-next 2/2] 6lowpan: ndisc: add missing 802.15.4 only check

This patch adds a missing check to handle short address parsing for
802.15.4 6LoWPAN only.

Signed-off-by: Alexander Aring <[email protected]>
---
net/6lowpan/ndisc.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/net/6lowpan/ndisc.c b/net/6lowpan/ndisc.c
index 030504e..79c5fa9 100644
--- a/net/6lowpan/ndisc.c
+++ b/net/6lowpan/ndisc.c
@@ -47,6 +47,9 @@ static int lowpan_ndisc_parse_options(const struct net_device *dev,
struct nd_opt_hdr *nd_opt,
struct ndisc_options *ndopts)
{
+ if (!lowpan_is_ll(dev, LOWPAN_LLTYPE_IEEE802154))
+ return 0;
+
switch (nd_opt->nd_opt_type) {
case ND_OPT_SOURCE_LL_ADDR:
case ND_OPT_TARGET_LL_ADDR:
--
2.9.0