Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp296445imm; Thu, 31 May 2018 00:04:02 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIB4OGUKN8qtP5yZfVLPydXQtmFN84uUxrFL81q5qZJk4w9NpUuF0rSYlIZ0jp4plp6T+1p X-Received: by 2002:a63:78c3:: with SMTP id t186-v6mr4492148pgc.93.1527750242662; Thu, 31 May 2018 00:04:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527750242; cv=none; d=google.com; s=arc-20160816; b=cPsV+JSQJZ6JRNuNbDyh0AlvfOQo7mh1l/cKr18Kf7OVFARTpABuY5/JYz171i7FB/ XU+3qg8VS+XiZ4O4chbj8hwSEEHpjJEkkhrCG+rl9PNjqKofKz06ILkpJTJ8cTxAGkGU qi8Rb76LlXCCBKQ2IkaMkVbsCIj6GacFIpXyKIBJY0s5fY5CnVpQkvAQUrF46EbzJk01 VK3yeQxS/TS0VT7CRSXvxNWhJf/qyZuR8ewMydiFYqcpVrb2SSyyCSXrr8Z27FrK+Ss/ 6db5bQFiOouJBXnTNaZBQ8M7O6ddYVwaCYRcLUykVbqKMS7CKZBTT/rCmJey1H7+2ihc aibA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature:arc-authentication-results; bh=exA1jdJ1mD8CStDkRZ4x4WlG+tIsf7JpEKs3jdVhHvM=; b=tMV53C6bHlAOGBZ8nwQ3RiE1IJFLiKOsApYtDXGFInkdYI3huA5BBLAaYqnw1SchQf O0hy2uiPg9vLCqTbkQe8QyEli/SxKyczRIUOp54jl9a+h6/7M67/mnGrQmgSdBuzObbU d9lnUL1Be8DARYqFZdM6Se1vTGPz5d1+oabN7+HZIJGTXvmlIKKntGlLuBfpVLRFSv0Z Kq8CnIV9FblHbImqZI1E0YtNN5/OO1S8bnZ7+t0Hvgh04oJZe5j0mxWEP6WhVGD+6k3Q QxsryTyAQMzLH2Yt7ABQLBa4uBZN4zEJSRoXcDluxlbx+lMt/EBC2qC+UEuWJviIAOP5 9+fA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mendozajonas.com header.s=fm3 header.b=POoZUEtd; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b=lAcO7cMh; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f8-v6si14246074pgr.35.2018.05.31.00.03.46; Thu, 31 May 2018 00:04:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@mendozajonas.com header.s=fm3 header.b=POoZUEtd; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b=lAcO7cMh; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753976AbeEaHDT (ORCPT + 99 others); Thu, 31 May 2018 03:03:19 -0400 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:49781 "EHLO out1-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753825AbeEaHDQ (ORCPT ); Thu, 31 May 2018 03:03:16 -0400 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id 7F6B821B87; Thu, 31 May 2018 03:03:15 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Thu, 31 May 2018 03:03:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= mendozajonas.com; h=cc:date:from:message-id:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=exA1jdJ1mD8CStDkR Z4x4WlG+tIsf7JpEKs3jdVhHvM=; b=POoZUEtdQmhTyG8jmkQrG5dVh16zBBKWe a85azSLjYXPAqM+LpRjaf6XPRT82yswj0fLEHYzbDwA1/qgOucEE5qnm75rX4z4s RUfswdi2q7hQcg55/Wue6wWNqB7Z9lhv3JeU6fWoQDwAQ/KZ9fSwrBrza4N3s/Vz Mh6/jvfQwcdtu8pim/MiBUbvXeYiU2aNb2b1DYm5GUlbb0RAEwjd7g5iQvF16efq tc3ngLJv5PwXjP5gIhJVzRYAUSdw3r62T1W+ad73/PvE5nVWEXhDnRiysSyxA6Sh ZNa8ecMFlyRp2cIFjVhtHBpRHaq5QW2C/KY3RZMGFq1WtFu2ir84g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:message-id:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=exA1jdJ1mD8CStDkR Z4x4WlG+tIsf7JpEKs3jdVhHvM=; b=lAcO7cMhZQeAGty5H2e3T25nk940venvS vUhNRHrSQp0bETRrBxAE1Df7oPBYmjmZdUA0tssnCkytU9z51HB6o5g5Ofk+GnKN YeL8nS+8Ve/0A1wqSJf6ICNhcWVYHHsw7WQldcyE21VyM3HXnCeFPe0jsAv3wKRx aVLPRH4Mi6VQGQgXUfEEM3vnsMV632qbnjEDYRTq6LRLGniyvnBNuGMDlJNeR1Mc 6SYolbLSX+rWUADkXUF9ofv6Qvi2PWmH/iLG1gPM9hL6QQ4vUvknHWimcnhow1xU tAUxzxv9cipb93AAVBqWopaLFoS4z9YSS4zSnaBjNhqfvLw56yckw== X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Proxy: X-ME-Sender: Received: from v4.ozlabs.ibm.com (unknown [122.99.82.10]) by mail.messagingengine.com (Postfix) with ESMTPA id 1A1D2102C0; Thu, 31 May 2018 03:03:12 -0400 (EDT) From: Samuel Mendoza-Jonas To: netdev@vger.kernel.org Cc: Samuel Mendoza-Jonas , "David S . Miller" , linux-kernel@vger.kernel.org, openbmc@lists.ozlabs.org Subject: [PATCH net-next] net/ncsi: Avoid GFP_KERNEL in response handler Date: Thu, 31 May 2018 17:02:54 +1000 Message-Id: <20180531070254.28878-1-sam@mendozajonas.com> X-Mailer: git-send-email 2.17.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ncsi_rsp_handler_gc() allocates the filter arrays using GFP_KERNEL in softirq context, causing the below backtrace. This allocation is only a few dozen bytes during probing so allocate with GFP_ATOMIC instead. [ 42.813372] BUG: sleeping function called from invalid context at mm/slab.h:416 [ 42.820900] in_atomic(): 1, irqs_disabled(): 0, pid: 213, name: kworker/0:1 [ 42.827893] INFO: lockdep is turned off. [ 42.832023] CPU: 0 PID: 213 Comm: kworker/0:1 Tainted: G W 4.13.16-01441-gad99b38 #65 [ 42.841007] Hardware name: Generic DT based system [ 42.845966] Workqueue: events ncsi_dev_work [ 42.850251] [<8010a494>] (unwind_backtrace) from [<80107510>] (show_stack+0x20/0x24) [ 42.858046] [<80107510>] (show_stack) from [<80612770>] (dump_stack+0x20/0x28) [ 42.865309] [<80612770>] (dump_stack) from [<80148248>] (___might_sleep+0x230/0x2b0) [ 42.873241] [<80148248>] (___might_sleep) from [<80148334>] (__might_sleep+0x6c/0xac) [ 42.881129] [<80148334>] (__might_sleep) from [<80240d6c>] (__kmalloc+0x210/0x2fc) [ 42.888737] [<80240d6c>] (__kmalloc) from [<8060ad54>] (ncsi_rsp_handler_gc+0xd0/0x170) [ 42.896770] [<8060ad54>] (ncsi_rsp_handler_gc) from [<8060b454>] (ncsi_rcv_rsp+0x16c/0x1d4) [ 42.905314] [<8060b454>] (ncsi_rcv_rsp) from [<804d86c8>] (__netif_receive_skb_core+0x3c8/0xb50) [ 42.914158] [<804d86c8>] (__netif_receive_skb_core) from [<804d96cc>] (__netif_receive_skb+0x20/0x7c) [ 42.923420] [<804d96cc>] (__netif_receive_skb) from [<804de4b0>] (netif_receive_skb_internal+0x78/0x6a4) [ 42.932931] [<804de4b0>] (netif_receive_skb_internal) from [<804df980>] (netif_receive_skb+0x78/0x158) [ 42.942292] [<804df980>] (netif_receive_skb) from [<8042f204>] (ftgmac100_poll+0x43c/0x4e8) [ 42.950855] [<8042f204>] (ftgmac100_poll) from [<804e094c>] (net_rx_action+0x278/0x4c4) [ 42.958918] [<804e094c>] (net_rx_action) from [<801016a8>] (__do_softirq+0xe0/0x4c4) [ 42.966716] [<801016a8>] (__do_softirq) from [<8011cd9c>] (do_softirq.part.4+0x50/0x78) [ 42.974756] [<8011cd9c>] (do_softirq.part.4) from [<8011cebc>] (__local_bh_enable_ip+0xf8/0x11c) [ 42.983579] [<8011cebc>] (__local_bh_enable_ip) from [<804dde08>] (__dev_queue_xmit+0x260/0x890) [ 42.992392] [<804dde08>] (__dev_queue_xmit) from [<804df1f0>] (dev_queue_xmit+0x1c/0x20) [ 43.000689] [<804df1f0>] (dev_queue_xmit) from [<806099c0>] (ncsi_xmit_cmd+0x1c0/0x244) [ 43.008763] [<806099c0>] (ncsi_xmit_cmd) from [<8060dc14>] (ncsi_dev_work+0x2e0/0x4c8) [ 43.016725] [<8060dc14>] (ncsi_dev_work) from [<80133dfc>] (process_one_work+0x214/0x6f8) [ 43.024940] [<80133dfc>] (process_one_work) from [<80134328>] (worker_thread+0x48/0x558) [ 43.033070] [<80134328>] (worker_thread) from [<8013ba80>] (kthread+0x130/0x174) [ 43.040506] [<8013ba80>] (kthread) from [<80102950>] (ret_from_fork+0x14/0x24) Signed-off-by: Samuel Mendoza-Jonas --- net/ncsi/ncsi-rsp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/ncsi/ncsi-rsp.c b/net/ncsi/ncsi-rsp.c index a6b7c7d5c829..930c1d3796f0 100644 --- a/net/ncsi/ncsi-rsp.c +++ b/net/ncsi/ncsi-rsp.c @@ -652,7 +652,7 @@ static int ncsi_rsp_handler_gc(struct ncsi_request *nr) NCSI_CAP_VLAN_MASK; size = (rsp->uc_cnt + rsp->mc_cnt + rsp->mixed_cnt) * ETH_ALEN; - nc->mac_filter.addrs = kzalloc(size, GFP_KERNEL); + nc->mac_filter.addrs = kzalloc(size, GFP_ATOMIC); if (!nc->mac_filter.addrs) return -ENOMEM; nc->mac_filter.n_uc = rsp->uc_cnt; @@ -661,7 +661,7 @@ static int ncsi_rsp_handler_gc(struct ncsi_request *nr) nc->vlan_filter.vids = kcalloc(rsp->vlan_cnt, sizeof(*nc->vlan_filter.vids), - GFP_KERNEL); + GFP_ATOMIC); if (!nc->vlan_filter.vids) return -ENOMEM; /* Set VLAN filters active so they are cleared in the first -- 2.17.0