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
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
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
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
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
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