All of lore.kernel.org
 help / color / mirror / Atom feed
From: Haggai Eran <haggai.eran@gmail.com>
To: Arend van Spriel <aspriel@gmail.com>
Cc: Larry Finger <Larry.Finger@lwfinger.net>,
	Florian Schilhabel <florian.c.schilhabel@googlemail.com>,
	linux-wireless@vger.kernel.org
Subject: Re: kernel page fault in r8712u
Date: Sun, 17 May 2015 22:22:45 +0300	[thread overview]
Message-ID: <CAJ=9CzaDK+oKJ8JJtb_OE6wrh85f8ffPf_oa9c0GRQFStUULjg@mail.gmail.com> (raw)
In-Reply-To: <CAJ=9CzbxScr7SJjhxnxAWt+xS-A8VR-_PQs0BbbdUp7xCaG2aw@mail.gmail.com>

I added some debugging prints, trying to see more details about the
packet that fails the r8712_validate_recv_frame. I noticed I'm getting
many packets where recv_decache returns _FAIL. However, the last two
packets before the crash fail for different reasons. The first has the
ver field set to 3 (instead of zero). The second (the one that get's
freed and cause the crash apparently) has an unknown type (12). If I'm
not mistaken, 12 = WIFI_CTRL_TYPE | WIFI_DATA_TYPE. Is that possible?

It could be that the packet headers are garbled though.

Haggai

On 17 May 2015 at 20:20, Haggai Eran <haggai.eran@gmail.com> wrote:
> On 17 May 2015 at 13:29, Arend van Spriel <aspriel@gmail.com> wrote:
>> On 17-05-15 06:25, Haggai Eran wrote:
>>>
>>> On 16 May 2015 at 20:54, Larry Finger <Larry.Finger@lwfinger.net> wrote:
>>>>
>>>> Another location needed from gdb is "l *recv_func+0x8c".
>>>
>>>
>>> Here it is:
>>> (gdb) l *recv_func+0x8c
>>> 0x17094 is in recv_func (drivers/staging/rtl8712/rtl8712_recv.c:1004).
>>> 999                     r8712_free_recvframe(orig_prframe,
>>> pfree_recv_queue);
>>> 1000                    goto _exit_recv_func;
>>> 1001            }
>>> 1002    _exit_recv_func:
>>> 1003            return retval;
>>> 1004    }
>>> 1005
>>> 1006    static int recvbuf2recvframe(struct _adapter *padapter, struct
>>> sk_buff *pskb)
>>> 1007    {
>>> 1008            u8 *pbuf, shift_sz = 0;
>>>
>>> I don't think this means the relevant call is the one at line 999. I
>>> think it is an earlier call, after r8712_validate_recv_frame. Here's
>>> the disassembly:
>>
>>
>> can you provide the address of recv_func as well to determine the exact
>> location in assembly.
>
> Yes, it is in offset 0x17008 in the module:
>> 00017008 <recv_func>:
>
> Regards,
> Haggai
>
>>
>>>          /* check the frame crtl field and decache */
>>>          retval = r8712_validate_recv_frame(padapter, prframe);
>>>     17070:       e1a00004        mov     r0, r4
>>>     17074:       e1a01005        mov     r1, r5
>>>     17078:       ebfffffe        bl      17bc0 <r8712_validate_recv_frame>
>>>          if (retval != _SUCCESS) {
>>>     1707c:       e3500001        cmp     r0, #1
>>>                          r8712_free_recvframe(orig_prframe,
>>> pfree_recv_queue);
>>>                          goto _exit_recv_func;
>>>                  }
>>>          }
>>>          /* check the frame crtl field and decache */
>>>          retval = r8712_validate_recv_frame(padapter, prframe);
>>>     17080:       e1a06000        mov     r6, r0
>>>          if (retval != _SUCCESS) {
>>>     17084:       0a000005        beq     170a0 <recv_func+0x98>
>>>                  /* free this recv_frame */
>>>                  r8712_free_recvframe(orig_prframe, pfree_recv_queue);
>>>     17088:       e1a00005        mov     r0, r5
>>>     1708c:       e1a01007        mov     r1, r7
>>>     17090:       ebfffffe        bl      166e8 <r8712_free_recvframe>
>>>                  r8712_free_recvframe(orig_prframe, pfree_recv_queue);
>>>                  goto _exit_recv_func;
>>>          }
>>> _exit_recv_func:
>>>          return retval;
>>> }
>>>     17094:       e1a00006        mov     r0, r6

  reply	other threads:[~2015-05-17 19:22 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-16 12:17 kernel page fault in r8712u Haggai Eran
2015-05-16 14:57 ` Larry Finger
2015-05-16 17:16   ` Haggai Eran
2015-05-16 17:41     ` Larry Finger
2015-05-16 17:54     ` Larry Finger
2015-05-17  4:25       ` Haggai Eran
2015-05-17 10:29         ` Arend van Spriel
2015-05-17 17:20           ` Haggai Eran
2015-05-17 19:22             ` Haggai Eran [this message]
2015-05-18 15:31               ` Larry Finger
2015-05-18 17:38                 ` Haggai Eran
2015-05-18 18:38                 ` Haggai Eran
2015-05-19  4:52                   ` Larry Finger
2015-05-19  5:00                     ` Haggai Eran
2015-05-19  5:16                     ` Haggai Eran

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='CAJ=9CzaDK+oKJ8JJtb_OE6wrh85f8ffPf_oa9c0GRQFStUULjg@mail.gmail.com' \
    --to=haggai.eran@gmail.com \
    --cc=Larry.Finger@lwfinger.net \
    --cc=aspriel@gmail.com \
    --cc=florian.c.schilhabel@googlemail.com \
    --cc=linux-wireless@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.