public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Alex Levin <levinale@chromium.org>,
	Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 5.1 39/51] ASoC: Intel: sst: fix kmalloc call with wrong flags
Date: Tue, 25 Jun 2019 23:40:55 -0400	[thread overview]
Message-ID: <20190626034117.23247-39-sashal@kernel.org> (raw)
In-Reply-To: <20190626034117.23247-1-sashal@kernel.org>

From: Alex Levin <levinale@chromium.org>

[ Upstream commit 3da428ff2aa5a5191ba2f1630eea75f03242f3f2 ]

When calling kmalloc with GFP_KERNEL in case CONFIG_SLOB is unset,
kmem_cache_alloc_trace is called.

In case CONFIG_TRACING is set, kmem_cache_alloc_trace will ball
slab_alloc, which will call slab_pre_alloc_hook which might_sleep_if.

The context in which it is called in this case, the
intel_sst_interrupt_mrfld, calling a sleeping kmalloc generates a BUG():

Fixes: 972b0d456e64 ("ASoC: Intel: remove GFP_ATOMIC, use GFP_KERNEL")

[   20.250671] BUG: sleeping function called from invalid context at mm/slab.h:422
[   20.250683] in_atomic(): 1, irqs_disabled(): 1, pid: 1791, name: Chrome_IOThread
[   20.250690] CPU: 0 PID: 1791 Comm: Chrome_IOThread Tainted: G        W         4.19.43 #61
[   20.250693] Hardware name: GOOGLE Kefka, BIOS Google_Kefka.7287.337.0 03/02/2017
[   20.250697] Call Trace:
[   20.250704]  <IRQ>
[   20.250716]  dump_stack+0x7e/0xc3
[   20.250725]  ___might_sleep+0x12a/0x140
[   20.250731]  kmem_cache_alloc_trace+0x53/0x1c5
[   20.250736]  ? update_cfs_rq_load_avg+0x17e/0x1aa
[   20.250740]  ? cpu_load_update+0x6c/0xc2
[   20.250746]  sst_create_ipc_msg+0x2d/0x88
[   20.250752]  intel_sst_interrupt_mrfld+0x12a/0x22c
[   20.250758]  __handle_irq_event_percpu+0x133/0x228
[   20.250764]  handle_irq_event_percpu+0x35/0x7a
[   20.250768]  handle_irq_event+0x36/0x55
[   20.250773]  handle_fasteoi_irq+0xab/0x16c
[   20.250779]  handle_irq+0xd9/0x11e
[   20.250785]  do_IRQ+0x54/0xe0
[   20.250791]  common_interrupt+0xf/0xf
[   20.250795]  </IRQ>
[   20.250800] RIP: 0010:__lru_cache_add+0x4e/0xad
[   20.250806] Code: 00 01 48 c7 c7 b8 df 01 00 65 48 03 3c 25 28 f1 00 00 48 8b 48 08 48 89 ca 48 ff ca f6 c1 01 48 0f 44 d0 f0 ff 42 34 0f b6 0f <89> ca fe c2 88 17 48 89 44 cf 08 80 fa 0f 74 0e 48 8b 08 66 85 c9
[   20.250809] RSP: 0000:ffffa568810bfd98 EFLAGS: 00000202 ORIG_RAX: ffffffffffffffd6
[   20.250814] RAX: ffffd3b904eb1940 RBX: ffffd3b904eb1940 RCX: 0000000000000004
[   20.250817] RDX: ffffd3b904eb1940 RSI: ffffa10ee5c47450 RDI: ffffa10efba1dfb8
[   20.250821] RBP: ffffa568810bfda8 R08: ffffa10ef9c741c1 R09: dead000000000100
[   20.250824] R10: 0000000000000000 R11: 0000000000000000 R12: ffffa10ee8d52a40
[   20.250827] R13: ffffa10ee8d52000 R14: ffffa10ee5c47450 R15: 800000013ac65067
[   20.250835]  lru_cache_add_active_or_unevictable+0x4e/0xb8
[   20.250841]  handle_mm_fault+0xd98/0x10c4
[   20.250848]  __do_page_fault+0x235/0x42d
[   20.250853]  ? page_fault+0x8/0x30
[   20.250858]  do_page_fault+0x3d/0x17a
[   20.250862]  ? page_fault+0x8/0x30
[   20.250866]  page_fault+0x1e/0x30
[   20.250872] RIP: 0033:0x7962fdea9304
[   20.250875] Code: 0f 11 4c 17 f0 c3 48 3b 15 f1 26 31 00 0f 83 e2 00 00 00 48 39 f7 72 0f 74 12 4c 8d 0c 16 4c 39 cf 0f 82 63 01 00 00 48 89 d1 <f3> a4 c3 80 fa 08 73 12 80 fa 04 73 1e 80 fa 01 77 26 72 05 0f b6
[   20.250879] RSP: 002b:00007962f4db5468 EFLAGS: 00010206
[   20.250883] RAX: 00003c8cc9d47008 RBX: 0000000000000000 RCX: 0000000000001b48
[   20.250886] RDX: 0000000000002b40 RSI: 00003c8cc9551000 RDI: 00003c8cc9d48000
[   20.250890] RBP: 00007962f4db5820 R08: 0000000000000000 R09: 00003c8cc9552b48
[   20.250893] R10: 0000562dd1064d30 R11: 00003c8cc825b908 R12: 00003c8cc966d3c0
[   20.250896] R13: 00003c8cc9e280c0 R14: 0000000000000000 R15: 0000000000000000

Signed-off-by: Alex Levin <levinale@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/intel/atom/sst/sst_pvt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/intel/atom/sst/sst_pvt.c b/sound/soc/intel/atom/sst/sst_pvt.c
index 00a37a09dc9b..dba0ca07ebf9 100644
--- a/sound/soc/intel/atom/sst/sst_pvt.c
+++ b/sound/soc/intel/atom/sst/sst_pvt.c
@@ -166,11 +166,11 @@ int sst_create_ipc_msg(struct ipc_post **arg, bool large)
 {
 	struct ipc_post *msg;
 
-	msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+	msg = kzalloc(sizeof(*msg), GFP_ATOMIC);
 	if (!msg)
 		return -ENOMEM;
 	if (large) {
-		msg->mailbox_data = kzalloc(SST_MAILBOX_SIZE, GFP_KERNEL);
+		msg->mailbox_data = kzalloc(SST_MAILBOX_SIZE, GFP_ATOMIC);
 		if (!msg->mailbox_data) {
 			kfree(msg);
 			return -ENOMEM;
-- 
2.20.1


  parent reply	other threads:[~2019-06-26  3:43 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-26  3:40 [PATCH AUTOSEL 5.1 01/51] HID: i2c-hid: add iBall Aer3 to descriptor override Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 02/51] ASoC : cs4265 : readable register too low Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 03/51] ASoC: ak4458: add return value for ak4458_probe Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 04/51] ASoC: soc-pcm: BE dai needs prepare when pause release after resume Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 05/51] ASoC: ak4458: rstn_control - return a non-zero on error only Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 06/51] spi: bitbang: Fix NULL pointer dereference in spi_unregister_master Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 07/51] ASoC: soc-dpm: fixup DAI active unbalance Sasha Levin
2019-06-26 10:03   ` Mark Brown
2019-06-27  0:20     ` Sasha Levin
2019-07-01 16:18       ` Mark Brown
2019-07-03 14:16         ` Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 08/51] ASoC: core: lock client_mutex while removing link components Sasha Levin
2019-06-26 10:37   ` Mark Brown
2019-06-27  0:24     ` Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 09/51] iommu/vt-d: Fix lock inversion between iommu->lock and device_domain_lock Sasha Levin
2019-06-26  6:56   ` Joerg Roedel
2019-06-27  0:27     ` Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 10/51] iommu/vt-d: Set the right field for Page Walk Snoop Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 11/51] ASoC: sun4i-codec: fix first delay on Speaker Sasha Levin
2019-06-26 10:37   ` Mark Brown
2019-07-03 14:20     ` Sasha Levin
2019-07-03 17:07       ` Mark Brown
2019-07-03 18:10         ` Sasha Levin
2019-07-03 20:08           ` Mark Brown
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 12/51] HID: a4tech: fix horizontal scrolling Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 13/51] ASoC: Intel: Baytrail: add quirk for Aegex 10 (RU2) tablet Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 14/51] ASoC: hda: fix unbalanced codec dev refcount for HDA_DEV_ASOC Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 15/51] drm/mediatek: fix unbind functions Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 16/51] drm/mediatek: unbind components in mtk_drm_unbind() Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 17/51] drm/mediatek: call drm_atomic_helper_shutdown() when unbinding driver Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 18/51] drm/mediatek: clear num_pipes when unbind driver Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 19/51] drm/mediatek: call mtk_dsi_stop() after mtk_drm_crtc_atomic_disable() Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 20/51] ASoC: max98090: remove 24-bit format support if RJ is 0 Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 21/51] ASoC: sun4i-i2s: Fix sun8i tx channel offset mask Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 22/51] ASoC: sun4i-i2s: Add offset to RX channel select Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 23/51] x86/CPU: Add more Icelake model numbers Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 24/51] usb: gadget: fusb300_udc: Fix memory leak of fusb300->ep[i] Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 25/51] usb: gadget: udc: lpc32xx: allocate descriptor with GFP_ATOMIC Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 26/51] usb: gadget: dwc2: fix zlp handling Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 27/51] ASoC: Intel: cht_bsw_max98090: fix kernel oops with platform_name override Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 28/51] ASoC: Intel: bytcht_es8316: " Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 29/51] ASoC: Intel: cht_bsw_nau8824: " Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 30/51] ASoC: Intel: cht_bsw_rt5672: " Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 31/51] ASoC: core: move DAI pre-links initiation to snd_soc_instantiate_card Sasha Levin
2019-06-26 10:38   ` Mark Brown
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 32/51] ALSA: hdac: fix memory release for SST and SOF drivers Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 33/51] SoC: rt274: Fix internal jack assignment in set_jack callback Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 34/51] scsi: hpsa: correct ioaccel2 chaining Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 35/51] gpio: pca953x: hack to fix 24 bit gpio expanders Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 36/51] drm: panel-orientation-quirks: Add quirk for GPD pocket2 Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 37/51] drm: panel-orientation-quirks: Add quirk for GPD MicroPC Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 38/51] ASoC: core: Fix deadlock in snd_soc_instantiate_card() Sasha Levin
2019-06-26 10:39   ` Mark Brown
2019-06-27  0:24     ` Sasha Levin
2019-06-26  3:40 ` Sasha Levin [this message]
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 40/51] platform/x86: asus-wmi: Only Tell EC the OS will handle display hotkeys from asus_nb_wmi Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 41/51] platform/x86: intel-vbtn: Report switch events when event wakes device Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 42/51] platform/x86: mlx-platform: Fix parent device in i2c-mux-reg device registration Sasha Levin
2019-06-26  3:40 ` [PATCH AUTOSEL 5.1 43/51] platform/mellanox: mlxreg-hotplug: Add devm_free_irq call to remove flow Sasha Levin
2019-06-26  3:41 ` [PATCH AUTOSEL 5.1 44/51] i2c: pca-platform: Fix GPIO lookup code Sasha Levin
2019-06-26  3:41 ` [PATCH AUTOSEL 5.1 45/51] arm64: tlbflush: Ensure start/end of address range are aligned to stride Sasha Levin
2019-06-26  3:41 ` [PATCH AUTOSEL 5.1 46/51] cpuset: restore sanity to cpuset_cpus_allowed_fallback() Sasha Levin
2019-06-26  3:41 ` [PATCH AUTOSEL 5.1 47/51] scripts/decode_stacktrace.sh: prefix addr2line with $CROSS_COMPILE Sasha Levin
2019-06-26  3:41 ` [PATCH AUTOSEL 5.1 48/51] mm/mlock.c: change count_mm_mlocked_page_nr return type Sasha Levin
2019-06-26  3:41 ` [PATCH AUTOSEL 5.1 49/51] tracing: avoid build warning with HAVE_NOP_MCOUNT Sasha Levin
2019-06-26  3:41 ` [PATCH AUTOSEL 5.1 50/51] module: Fix livepatch/ftrace module text permissions race Sasha Levin
2019-06-26  3:41 ` [PATCH AUTOSEL 5.1 51/51] ftrace: Fix NULL pointer dereference in free_ftrace_func_mapper() Sasha Levin

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=20190626034117.23247-39-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=broonie@kernel.org \
    --cc=levinale@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@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