* [regression] iwlwifi: crash in iwl_parse_tlv_firmware() @ 2017-01-29 13:56 Kalle Valo 2017-01-29 14:04 ` Kalle Valo 0 siblings, 1 reply; 6+ messages in thread From: Kalle Valo @ 2017-01-29 13:56 UTC (permalink / raw) To: linux-wireless; +Cc: linuxwifi Hi, updated the kernel on my test laptop and noticed that now iwlwifi crashes every time during boot. This is with tag ath-201701271935 ath.git master branch, which essentially is wt-2017-01-27 from wireless-testing plus latest ath patches. I tried v4.10-rc5 and iwlwifi didn't crash so my guess is that this is a regression in the latest iwlwifi pull. Below is the crash log and the location in source. This is all I got via netconsole. [ 39.296218] Intel(R) Wireless WiFi driver for Linux [ 39.296219] Copyright(c) 2003- 2015 Intel Corporation [ 39.299373] iwlwifi 0000:44:00.0: can't disable ASPM; OS doesn't have ASPM control [ 39.677192] BUG: unable to handle kernel NULL pointer dereference at 0000000c [ 39.677212] IP: iwl_parse_tlv_firmware.isra.5+0x9a0/0xd60 [iwlwifi] [ 39.677213] *pdpt = 000000002f5bd001 *pde = 0000000000000000 [ 39.677215] [ 39.677217] Oops: 0002 [#1] SMP [ 39.677219] Modules linked in: btrtl(+) snd_seq_midi_event btbcm rfcomm(+) iwlwifi snd_rawmidi btintel bnep joydev input_leds coretemp cfg80211 bluetooth snd_seq snd_timer serio_raw snd_seq_device wmi snd video mac_hid soundcore lpc_ich shpchp parport_pc ppdev lp parport psmouse firewire_ohc [ 39.677244] CPU: 3 PID: 35 Comm: kworker/3:1 Not tainted 4.10.0-rc5-wt-ath+ #173 [ 39.677245] Hardware name: Hewlett-Packard HP ProBook 6540b/1722, BIOS 68CDD Ver. F.04 01/27/2010 [ 39.677252] Workqueue: events request_firmware_work_func [ 39.677254] task: f387bac0 task.stack: f3916000 [ 39.677263] EIP: iwl_parse_tlv_firmware.isra.5+0x9a0/0xd60 [iwlwifi] [ 39.677264] EFLAGS: 00010293 CPU: 3 [ 39.677266] EAX: 00000000 EBX: 0001ec18 ECX: f8fc2060 EDX: 000339f8 [ 39.677267] ESI: f8fc2058 EDI: f8fe0c78 EBP: f3917e54 ESP: f3917df8 [ 39.677268] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 [ 39.677270] CR0: 80050033 CR2: 0000000c CR3: 3033cd20 CR4: 000006f0 [ 39.677271] Call Trace: gdb drivers/net/wireless/intel/iwlwifi/iwlwifi.ko (gdb) l *(iwl_parse_tlv_firmware+0x9a0) 0x2170 is in iwl_parse_tlv_firmware (drivers/net/wireless/intel/iwlwifi/iwl-drv.c:299). 294 static void set_sec_data(struct iwl_firmware_pieces *pieces, 295 enum iwl_ucode_type type, 296 int sec, 297 const void *data) 298 { 299 pieces->img[type].sec[sec].data = data; 300 } 301 302 static void set_sec_size(struct iwl_firmware_pieces *pieces, 303 enum iwl_ucode_type type, (gdb) -- Kalle Valo ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [regression] iwlwifi: crash in iwl_parse_tlv_firmware() 2017-01-29 13:56 [regression] iwlwifi: crash in iwl_parse_tlv_firmware() Kalle Valo @ 2017-01-29 14:04 ` Kalle Valo 2017-01-30 10:34 ` [PATCH] iwlwifi: alloc memory dynamically also for DVM Luca Coelho 0 siblings, 1 reply; 6+ messages in thread From: Kalle Valo @ 2017-01-29 14:04 UTC (permalink / raw) To: linux-wireless; +Cc: linuxwifi Kalle Valo <kvalo@codeaurora.org> writes: > updated the kernel on my test laptop and noticed that now iwlwifi > crashes every time during boot. This is with tag ath-201701271935 > ath.git master branch, which essentially is wt-2017-01-27 from > wireless-testing plus latest ath patches. > > I tried v4.10-rc5 and iwlwifi didn't crash so my guess is that this is a > regression in the latest iwlwifi pull. Below is the crash log and the > location in source. This is all I got via netconsole. Forgot to include info about the device (from a working kernel): [ 17.911087] iwlwifi 0000:44:00.0: can't disable ASPM; OS doesn't have ASPM control [ 17.931205] iwlwifi 0000:44:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm [ 18.073590] iwlwifi 0000:44:00.0: CONFIG_IWLWIFI_DEBUG enabled [ 18.073679] iwlwifi 0000:44:00.0: CONFIG_IWLWIFI_DEBUGFS enabled [ 18.073757] iwlwifi 0000:44:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled [ 18.073837] iwlwifi 0000:44:00.0: Detected Intel(R) Centrino(R) Wireless-N 1000 BGN, REV=0x6C [ 18.078383] iwlwifi 0000:44:00.0: L1 Enabled - LTR Disabled [ 19.359378] iwlwifi 0000:44:00.0 wlan1: renamed from wlan0 -- Kalle Valo ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] iwlwifi: alloc memory dynamically also for DVM 2017-01-29 14:04 ` Kalle Valo @ 2017-01-30 10:34 ` Luca Coelho 2017-01-30 11:40 ` Kalle Valo 2017-01-31 7:11 ` Kalle Valo 0 siblings, 2 replies; 6+ messages in thread From: Luca Coelho @ 2017-01-30 10:34 UTC (permalink / raw) To: kvalo; +Cc: linux-wireless, Sara Sharon, Luca Coelho From: Sara Sharon <sara.sharon@intel.com> For old firmwares the memory wasn't allocated, resulting in panic. Make it dynamically allocated as well. Allow any order of functions call. Fixes: eef187a7b8a1 ("iwlwifi: enlarge number of ucode sections") Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> --- Kalle, Could you test this patch to see if it solves the problem? Thanks! drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c index 1d1af4bc1530..d22821501676 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c @@ -291,11 +291,33 @@ static struct fw_sec *get_sec(struct iwl_firmware_pieces *pieces, return &pieces->img[type].sec[sec]; } +static void alloc_sec_data(struct iwl_firmware_pieces *pieces, + enum iwl_ucode_type type, + int sec) +{ + struct fw_img_parsing *img = &pieces->img[type]; + struct fw_sec *sec_memory; + int size = sec + 1; + size_t alloc_size = sizeof(*img->sec) * size; + + if (img->sec && img->sec_counter >= size) + return; + + sec_memory = krealloc(img->sec, alloc_size, GFP_KERNEL); + if (!sec_memory) + return; + + img->sec = sec_memory; + img->sec_counter = size; +} + static void set_sec_data(struct iwl_firmware_pieces *pieces, enum iwl_ucode_type type, int sec, const void *data) { + alloc_sec_data(pieces, type, sec); + pieces->img[type].sec[sec].data = data; } @@ -304,6 +326,8 @@ static void set_sec_size(struct iwl_firmware_pieces *pieces, int sec, size_t size) { + alloc_sec_data(pieces, type, sec); + pieces->img[type].sec[sec].size = size; } @@ -319,6 +343,8 @@ static void set_sec_offset(struct iwl_firmware_pieces *pieces, int sec, u32 offset) { + alloc_sec_data(pieces, type, sec); + pieces->img[type].sec[sec].offset = offset; } -- 2.11.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] iwlwifi: alloc memory dynamically also for DVM 2017-01-30 10:34 ` [PATCH] iwlwifi: alloc memory dynamically also for DVM Luca Coelho @ 2017-01-30 11:40 ` Kalle Valo 2017-01-30 11:42 ` Luca Coelho 2017-01-31 7:11 ` Kalle Valo 1 sibling, 1 reply; 6+ messages in thread From: Kalle Valo @ 2017-01-30 11:40 UTC (permalink / raw) To: Luca Coelho; +Cc: linux-wireless, Sara Sharon, Luca Coelho Luca Coelho <luca@coelho.fi> writes: > From: Sara Sharon <sara.sharon@intel.com> > > For old firmwares the memory wasn't allocated, resulting in panic. > Make it dynamically allocated as well. Allow any order of functions > call. > > Fixes: eef187a7b8a1 ("iwlwifi: enlarge number of ucode sections") > Signed-off-by: Sara Sharon <sara.sharon@intel.com> > Signed-off-by: Luca Coelho <luciano.coelho@intel.com> > --- > > Kalle, > > Could you test this patch to see if it solves the problem? It does, thank you for quickly fixing this. Tested-by: Kalle Valo <kvalo@codeaurora.org> As this is a serious regression can I apply this directly to wireless-drivers-next? -- Kalle Valo ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] iwlwifi: alloc memory dynamically also for DVM 2017-01-30 11:40 ` Kalle Valo @ 2017-01-30 11:42 ` Luca Coelho 0 siblings, 0 replies; 6+ messages in thread From: Luca Coelho @ 2017-01-30 11:42 UTC (permalink / raw) To: Kalle Valo; +Cc: linux-wireless, Sara Sharon On Mon, 2017-01-30 at 13:40 +0200, Kalle Valo wrote: > Luca Coelho <luca@coelho.fi> writes: > > > From: Sara Sharon <sara.sharon@intel.com> > > > > For old firmwares the memory wasn't allocated, resulting in panic. > > Make it dynamically allocated as well. Allow any order of functions > > call. > > > > Fixes: eef187a7b8a1 ("iwlwifi: enlarge number of ucode sections") > > Signed-off-by: Sara Sharon <sara.sharon@intel.com> > > Signed-off-by: Luca Coelho <luciano.coelho@intel.com> > > --- > > > > Kalle, > > > > Could you test this patch to see if it solves the problem? > > It does, thank you for quickly fixing this. > > Tested-by: Kalle Valo <kvalo@codeaurora.org> Great! Thanks a lot for testing it quickly. :) > As this is a serious regression can I apply this directly to > wireless-drivers-next? Yes, please go ahead. -- Cheers, Luca. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: iwlwifi: alloc memory dynamically also for DVM 2017-01-30 10:34 ` [PATCH] iwlwifi: alloc memory dynamically also for DVM Luca Coelho 2017-01-30 11:40 ` Kalle Valo @ 2017-01-31 7:11 ` Kalle Valo 1 sibling, 0 replies; 6+ messages in thread From: Kalle Valo @ 2017-01-31 7:11 UTC (permalink / raw) To: Luciano Coelho; +Cc: linux-wireless, Sara Sharon, Luca Coelho Luciano Coelho <luca@coelho.fi> wrote: > From: Sara Sharon <sara.sharon@intel.com> > > For old firmwares the memory wasn't allocated, resulting in panic. > Make it dynamically allocated as well. Allow any order of functions > call. > > Fixes: eef187a7b8a1 ("iwlwifi: enlarge number of ucode sections") > Signed-off-by: Sara Sharon <sara.sharon@intel.com> > Signed-off-by: Luca Coelho <luciano.coelho@intel.com> > Tested-by: Kalle Valo <kvalo@codeaurora.org> Patch applied to wireless-drivers-next.git, thanks. d546530e5694 iwlwifi: alloc memory dynamically also for DVM -- https://patchwork.kernel.org/patch/9544763/ Documentation about submitting wireless patches and checking status from patchwork: https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-01-31 7:11 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-01-29 13:56 [regression] iwlwifi: crash in iwl_parse_tlv_firmware() Kalle Valo 2017-01-29 14:04 ` Kalle Valo 2017-01-30 10:34 ` [PATCH] iwlwifi: alloc memory dynamically also for DVM Luca Coelho 2017-01-30 11:40 ` Kalle Valo 2017-01-30 11:42 ` Luca Coelho 2017-01-31 7:11 ` Kalle Valo
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.