2013-02-14 09:38:17

by Mohammed Shafi Shajakhan

[permalink] [raw]
Subject: [PATCH 5/6] ath6kl: Fix a debugfs crash for USB devices

From: Mohammed Shafi Shajakhan <[email protected]>

Credit distribution stats is currently implemented
only for SDIO. This fixes a crash in debugfs for
USB interface.

BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [<f91c2048>] read_file_credit_dist_stats+0x38/0x330 [ath6kl_core]
*pde = b62bd067
Oops: 0000 [#1] SMP

EIP: 0060:[<f91c2048>] EFLAGS: 00210246 CPU: 0
EIP is at read_file_credit_dist_stats+0x38/0x330 [ath6kl_core]
EAX: 00000000 EBX: e6f7a9c0 ECX: e7b148b8 EDX: 00000000
ESI: 000000c8 EDI: e7b14000 EBP: e6e09f64 ESP: e6e09f30
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Process cat (pid: 4058, ti=e6e08000 task=e50cf230 task.ti=e6e08000)
Stack:
00008000 00000000 e6e09f64 c1132d3c 00004e71 e50cf230 00008000 089e4000
e7b148b8 00000000 e6f7a9c0 00008000 089e4000 e6e09f8c c11331fc e6e09f98
00000001 e6e09f7c f91c2010 e6e09fac e6f7a9c0 089e4877 089e4000 e6e09fac

Call Trace:
[<c1132d3c>] ? rw_verify_area+0x6c/0x120
[<c11331fc>] vfs_read+0x8c/0x160
[<f91c2010>] ? read_file_war_stats+0x130/0x130 [ath6kl_core]
[<c113330d>] sys_read+0x3d/0x70
[<c15755b4>] syscall_call+0x7/0xb
[<c1570000>] ? fill_powernow_table_pstate+0x127/0x127

Cc: Ryan Hsu <[email protected]>
Signed-off-by: Mohammed Shafi Shajakhan <[email protected]>
---
drivers/net/wireless/ath/ath6kl/debug.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/ath/ath6kl/debug.c b/drivers/net/wireless/ath/ath6kl/debug.c
index 15cfe30..0dbb67b 100644
--- a/drivers/net/wireless/ath/ath6kl/debug.c
+++ b/drivers/net/wireless/ath/ath6kl/debug.c
@@ -658,6 +658,9 @@ static ssize_t read_file_credit_dist_stats(struct file *file,
unsigned int buf_len, len = 0;
ssize_t ret_cnt;

+ if (ar->hif_type != ATH6KL_HIF_TYPE_SDIO)
+ return -EINVAL;
+
buf_len = CREDIT_INFO_DISPLAY_STRING_LEN +
get_queue_depth(&target->cred_dist_list) * CREDIT_INFO_LEN;
buf = kzalloc(buf_len, GFP_KERNEL);
--
1.7.9.5



2013-02-15 11:26:55

by Mohammed Shafi Shajakhan

[permalink] [raw]
Subject: Re: [PATCH 5/6] ath6kl: Fix a debugfs crash for USB devices

Hi Kalle,

On 02/15/2013 04:00 PM, Kalle Valo wrote:
> Mohammed Shafi Shajakhan <[email protected]> writes:
>
>> From: Mohammed Shafi Shajakhan <[email protected]>
>>
>> Credit distribution stats is currently implemented
>> only for SDIO. This fixes a crash in debugfs for
>> USB interface.
>>
>> BUG: unable to handle kernel NULL pointer dereference at (null)
>> IP: [<f91c2048>] read_file_credit_dist_stats+0x38/0x330 [ath6kl_core]
>> *pde = b62bd067
>> Oops: 0000 [#1] SMP
>
> [...]
>
>> --- a/drivers/net/wireless/ath/ath6kl/debug.c
>> +++ b/drivers/net/wireless/ath/ath6kl/debug.c
>> @@ -658,6 +658,9 @@ static ssize_t read_file_credit_dist_stats(struct file *file,
>> unsigned int buf_len, len = 0;
>> ssize_t ret_cnt;
>>
>> + if (ar->hif_type != ATH6KL_HIF_TYPE_SDIO)
>> + return -EINVAL;
>
> Actually I think it would be better not to even create the debugfs when
> using sdio.

agreed, but looks bit ugly right ? thoughts.

>


--
thanks,
shafi

2013-02-15 14:01:01

by Mohammed Shafi Shajakhan

[permalink] [raw]
Subject: Re: [PATCH 5/6] ath6kl: Fix a debugfs crash for USB devices

On 02/15/2013 05:13 PM, Kalle Valo wrote:
> Mohammed Shafi Shajakhan <[email protected]> writes:
>
>>>> + if (ar->hif_type != ATH6KL_HIF_TYPE_SDIO)
>>>> + return -EINVAL;
>>>
>>> Actually I think it would be better not to even create the debugfs when
>>> using sdio.
>
> Oops, meant of course s/debugfs/debugfs file/. There seems to be packet
> loss between my brains and fingers...

yeah I think its USB and debugfs file :)

>
>> agreed, but looks bit ugly right ? thoughts.
>
> Sorry, but I don't understand how not creating the debugfs file for usb
> would be ugly? But this isn't that important, if you want we can do it
> like you propose as well.
>

I will cook up a new patch, please see if that's fine :)

--
thanks,
shafi

2013-02-15 11:43:30

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 5/6] ath6kl: Fix a debugfs crash for USB devices

Mohammed Shafi Shajakhan <[email protected]> writes:

>>> + if (ar->hif_type != ATH6KL_HIF_TYPE_SDIO)
>>> + return -EINVAL;
>>
>> Actually I think it would be better not to even create the debugfs when
>> using sdio.

Oops, meant of course s/debugfs/debugfs file/. There seems to be packet
loss between my brains and fingers...

> agreed, but looks bit ugly right ? thoughts.

Sorry, but I don't understand how not creating the debugfs file for usb
would be ugly? But this isn't that important, if you want we can do it
like you propose as well.

--
Kalle Valo

2013-02-15 10:30:37

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 5/6] ath6kl: Fix a debugfs crash for USB devices

Mohammed Shafi Shajakhan <[email protected]> writes:

> From: Mohammed Shafi Shajakhan <[email protected]>
>
> Credit distribution stats is currently implemented
> only for SDIO. This fixes a crash in debugfs for
> USB interface.
>
> BUG: unable to handle kernel NULL pointer dereference at (null)
> IP: [<f91c2048>] read_file_credit_dist_stats+0x38/0x330 [ath6kl_core]
> *pde = b62bd067
> Oops: 0000 [#1] SMP

[...]

> --- a/drivers/net/wireless/ath/ath6kl/debug.c
> +++ b/drivers/net/wireless/ath/ath6kl/debug.c
> @@ -658,6 +658,9 @@ static ssize_t read_file_credit_dist_stats(struct file *file,
> unsigned int buf_len, len = 0;
> ssize_t ret_cnt;
>
> + if (ar->hif_type != ATH6KL_HIF_TYPE_SDIO)
> + return -EINVAL;

Actually I think it would be better not to even create the debugfs when
using sdio.

--
Kalle Valo