Linux IEEE 802.15.4 and 6LoWPAN development
 help / color / mirror / Atom feed
From: Matteo Petracca <matteo.petracca@sssup.it>
To: Alexander Aring <alex.aring@gmail.com>
Cc: linux-wpan@vger.kernel.org
Subject: Re: Ieee802154 socket problem with SIOCGIFADDR
Date: Mon, 11 May 2015 18:43:25 +0200	[thread overview]
Message-ID: <5550DC2D.5060909@sssup.it> (raw)
In-Reply-To: <20150509164227.GA694@omega>

Hi,
I've applied your patch, but I ma still getting error:

.353646] Hardware name: Generic AM33XX (Flattened Device Tree)
[   88.353742] [<c0011f35>] (unwind_backtrace) from [<c00101b5>] 
(show_stack+0x11/0x14)
[   88.353870] [<c00101b5>] (show_stack) from [<bf8292fb>] 
(mac802154_wpan_ioctl+0xbe/0x10c [mac802154])
[   88.353974] [<bf8292fb>] (mac802154_wpan_ioctl [mac802154]) from 
[<bf8a138f>] (ieee802154_sock_ioctl+0xf6/0x14c [ieee802154_socket])
[   88.354059] [<bf8a138f>] (ieee802154_sock_ioctl [ieee802154_socket]) 
from [<c05195fb>] (sock_ioctl+0xd3/0x1bc)
[   88.354109] [<c05195fb>] (sock_ioctl) from [<c00fca4d>] 
(do_vfs_ioctl+0x2cd/0x400)
[   88.354148] [<c00fca4d>] (do_vfs_ioctl) from [<c00fcbcd>] 
(SyS_ioctl+0x4d/0x58)
[   88.354188] [<c00fcbcd>] (SyS_ioctl) from [<c000d641>] 
(ret_fast_syscall+0x1/0x44)

Matteo

On 09/05/2015 18:42, Alexander Aring wrote:
> Hi,
>
> On Sat, May 09, 2015 at 04:41:22PM +0200, Matteo Petracca wrote:
>> Dear all,
>> I am working on a BeagleboneBlack with transceiver at86rf233.
>>
>> When using ieee802154 sockets in my code I have:
>>
>> ret = ioctl(socketfd, SIOCGIFADDR, &ifr);
>>
>> and everything works fine with kernel 3.8.13.
>>
>> In kernel 4.0.1 the request fails with the following kernel messages:
>>
>> [  846.038365] RTNL: assertion failed at net/mac802154/iface.c (65)
>> [  846.044629] CPU: 0 PID: 2350 Comm: test Not tainted 4.0.1-bone1 #1
>> [  846.044653] Hardware name: Generic AM33XX (Flattened Device Tree)
>> [  846.044747] [<c0011f35>] (unwind_backtrace) from [<c00101b5>]
>> (show_stack+0x11/0x14)
>> [  846.044876] [<c00101b5>] (show_stack) from [<bf8502f3>]
>> (mac802154_wpan_ioctl+0xb6/0x100 [mac802154])
>> [  846.044972] [<bf8502f3>] (mac802154_wpan_ioctl [mac802154]) from
>> [<bf8b738f>] (ieee802154_sock_ioctl+0xf6/0x14c [ieee802154_socket])
>> [  846.045044] [<bf8b738f>] (ieee802154_sock_ioctl [ieee802154_socket]) from
>> [<c05195fb>] (sock_ioctl+0xd3/0x1bc)
>> [  846.045094] [<c05195fb>] (sock_ioctl) from [<c00fca4d>]
>> (do_vfs_ioctl+0x2cd/0x400)
>> [  846.045133] [<c00fca4d>] (do_vfs_ioctl) from [<c00fcbcd>]
>> (SyS_ioctl+0x4d/0x58)
>> [  846.045172] [<c00fcbcd>] (SyS_ioctl) from [<c000d641>]
>> (ret_fast_syscall+0x1/0x44)
>>
>> Do you have any idea how to solve the problem?
>>
> I did this assertion there because I supposed that the rtnl lock is hold
> while calling this callback. Now I see it isn't...
>
> We need to hold the rtnl lock there because we accessing the mib values.
>
> Try this:
>
> diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
> index 91b75ab..2a58788 100644
> --- a/net/mac802154/iface.c
> +++ b/net/mac802154/iface.c
> @@ -62,8 +62,7 @@ mac802154_wpan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
>                  (struct sockaddr_ieee802154 *)&ifr->ifr_addr;
>          int err = -ENOIOCTLCMD;
>   
> -       ASSERT_RTNL();
> -
> +       rtnl_lock();
>          spin_lock_bh(&sdata->mib_lock);
>   
>          switch (cmd) {
> @@ -90,6 +89,7 @@ mac802154_wpan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
>          case SIOCSIFADDR:
>                  if (netif_running(dev)) {
>                          spin_unlock_bh(&sdata->mib_lock);
> +                       rtnl_unlock();
>                          return -EBUSY;
>                  }
>   
> @@ -112,6 +112,7 @@ mac802154_wpan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
>          }
>   
>          spin_unlock_bh(&sdata->mib_lock);
> +       rtnl_unlock();
>          return err;
>   }
>
>
> I will put it in my queue for next patch series to remove the mib/pib
> spinlocks. We have only the rtnl lock now.
>
> - Alex


  reply	other threads:[~2015-05-11 16:43 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-09 14:41 Ieee802154 socket problem with SIOCGIFADDR Matteo Petracca
2015-05-09 16:42 ` Alexander Aring
2015-05-11 16:43   ` Matteo Petracca [this message]
2015-05-11 16:51     ` Alexander Aring
2015-05-11 16:58       ` Matteo Petracca
2015-05-11 17:29         ` Alexander Aring
2015-05-11 17:37       ` Alexander Aring
2015-05-11 17:51     ` Alexander Aring
2015-05-12  8:32       ` Matteo Petracca
2015-05-12  8:39         ` Alexander Aring
2015-05-12  9:48           ` Matteo Petracca
2015-05-12 10:33             ` Alexander Aring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5550DC2D.5060909@sssup.it \
    --to=matteo.petracca@sssup.it \
    --cc=alex.aring@gmail.com \
    --cc=linux-wpan@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox