From patchwork Wed Mar 4 07:50:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1248862 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=kKuOdRT6; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48XQzm43kpz9s3x for ; Wed, 4 Mar 2020 18:51:00 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728679AbgCDHu7 (ORCPT ); Wed, 4 Mar 2020 02:50:59 -0500 Received: from mail-pf1-f194.google.com ([209.85.210.194]:40142 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728515AbgCDHu7 (ORCPT ); Wed, 4 Mar 2020 02:50:59 -0500 Received: by mail-pf1-f194.google.com with SMTP id l184so543174pfl.7 for ; Tue, 03 Mar 2020 23:50:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=mFqHUntBoV4lXEyrsttan0SPpITp8nHSMf6K2JVaGqY=; b=kKuOdRT6KZepGfvNzpBWxTHaiDzalMtjvEQzYdxRP03B1GAhWdvZ6F13FtvRX2YRo1 +t33E7xJbTValeQxLBnY6bzgdhl6R3VEqYDlN0Vop3VzvlAP7f1eOpUQ9ADDF7AONUWR GvoiF7G+aAL5MPfwDXKkyObt2YN1gsnXSAVhAaUqCsAqecE9eCXfPnoKgsOG6YW6YTbH gFOicWIx+H8ili3Rbb7rQDZ6lCd+PXm7I0s/M7R9IavKfB7YMcSw3M1HePpM1cOSO/f/ WwFkDJfLc030mYi2Djh3XuHsCJLSkmyXG+NWpCIXXUZF/wdcIsThkWW5QKDeBXF6ErIs o+xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=mFqHUntBoV4lXEyrsttan0SPpITp8nHSMf6K2JVaGqY=; b=iq4LbcSLwzqlxH+cmqZN0eCSKn0EBveBC7g8OEQTMAYUonvWbzuGNAbF5HbtHhz9pH yXvUnooZlCPI7CZT9QQeBUc3s1Eg91CJehPewV8nMCm2PFq/diubT/P/tBBlIcKWuY4j vlVnKCGBm0K+SjZgjiX147lF43ZGSGmPXW9kM2cGzflxyo/DRhhV8i+ccWnJs0n5ouTH JwO34X7duRWMmWGLPbC/TQXAo9BGha9lLUYAnOqJ/hQylWR01ptab80snc+Jd9qVRV8z oZegnHMU+sh2WSPDw01KO71q+sEDKkNtHxwhU6WcoVvd99jumnzoIGdPUA4t0Z3hhSMa cLoA== X-Gm-Message-State: ANhLgQ2wD5AavcTByeTSq+dt0dJJLNjSNK+pdXF/+BADj4RGXorHgZWy oxzoJt2OyEt3GZAq3hRh8YcTmvLBKxs= X-Google-Smtp-Source: ADFU+vvW8Jj01Cbd5XomrwLxMZJDi+JedmN3L/VvQW5Mp9B0gbci2pKjsl0V36VpmxgkCOG3T+IozQ== X-Received: by 2002:a63:2a06:: with SMTP id q6mr1423043pgq.329.1583308258352; Tue, 03 Mar 2020 23:50:58 -0800 (PST) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id a143sm1786359pfd.108.2020.03.03.23.50.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 23:50:57 -0800 (PST) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, subashab@codeaurora.org, stranche@codeaurora.org, netdev@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH net-next 1/3] net: rmnet: add missing module alias Date: Wed, 4 Mar 2020 07:50:47 +0000 Message-Id: <20200304075047.23263-1-ap420073@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In the current rmnet code, there is no module alias. So, RTNL couldn't load rmnet module automatically. Test commands: ip link add dummy0 type dummy modprobe -rv rmnet ip link add rmnet0 link dummy0 type rmnet mux_id 1 Signed-off-by: Taehee Yoo --- drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c index fbf4cbcf1a65..d846a0ccea8f 100644 --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c @@ -475,4 +475,5 @@ static void __exit rmnet_exit(void) module_init(rmnet_init) module_exit(rmnet_exit) +MODULE_ALIAS_RTNL_LINK("rmnet"); MODULE_LICENSE("GPL v2"); From patchwork Wed Mar 4 07:51:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1248863 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=fwF9HBqU; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48XQzz5cGTz9s3x for ; Wed, 4 Mar 2020 18:51:11 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728713AbgCDHvL (ORCPT ); Wed, 4 Mar 2020 02:51:11 -0500 Received: from mail-pg1-f193.google.com ([209.85.215.193]:41655 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728515AbgCDHvK (ORCPT ); Wed, 4 Mar 2020 02:51:10 -0500 Received: by mail-pg1-f193.google.com with SMTP id b1so591268pgm.8 for ; Tue, 03 Mar 2020 23:51:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=H7LQCEqt6NvHP53teXnGz80fzxZjlYC/5O57fuXLeas=; b=fwF9HBqUN9ODfGaj+0RVOQyRKmB+z8dfpt9d9Nwl9n1RiHkEkXwg3fiOHfC0mUffL+ 5x+UvjUabUd10NZ85tsC8kLaMvp5fLmAyBs+2ekSftS0Yw109BEA9Q6oWxLqY8E4V/KV TtaTkUqaRneSHt7XffDk7v2lA10RYiqzzV52eJAMQXNpIUJZw4Htt8NcyJ9iFh2NbWpW UjREepKDmAS0kG3eflC1cbZHeoWG10NG9ZsapbwmfNHXLGnnV8Bie5HPqhNBXQpnXLRU 8EFdKR9BBa95fwOqiheavEoNsKBiPVK0/v0SjS8p0fv4RPKqIq+thjj9I5WvC3tmFeGU i2fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=H7LQCEqt6NvHP53teXnGz80fzxZjlYC/5O57fuXLeas=; b=YPwT+Lyx0pwZ0GlOxMGQR51DZbk950Sjqe9xBqoBFn9N8YlJA2FPPjQw5HLCSNgWl0 R5NJU26fLodfBExoMEo3jCXvA3/9x9aEvh5agJC5la37rVPEnJQgUUXjEGTDR5z4nV/V ZWAQ0YcrN2mKoD+I/UcQ9tyJj5Okk8eoNGVvgIBT9y1siaua35EpbjAenWPTYP5yWar/ 1apyrjPCB//vd1VFB4I5GdRqriJXl7sHMdYkPGjsFkVQ7HxV1UewwJEImUBIoxBCC6DP H2GnSKwU2Orc4e+/LzmPTB7/sCj1t8L4AV6Y7RpPAcNdFvZIm8HlPujmOMfSTi4dpELA VbIg== X-Gm-Message-State: ANhLgQ1exHkiwNg0naS940H24VRtjt7ciInKYEmjjDKEOUwBX5NOdgcg Nai4I0qC6R1GCZOJxcXkJfE= X-Google-Smtp-Source: ADFU+vtnjaqhrY0NiZtcy4Cw66RdnsB5RHZgd8XIC9fzr8h1HrrlwFcLV+UZDzv327vmo/CMur0gSQ== X-Received: by 2002:aa7:99c5:: with SMTP id v5mr1911100pfi.198.1583308269117; Tue, 03 Mar 2020 23:51:09 -0800 (PST) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id x66sm15569759pgb.9.2020.03.03.23.51.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 23:51:08 -0800 (PST) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, subashab@codeaurora.org, stranche@codeaurora.org, netdev@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH net-next 2/3] net: rmnet: print error message when command fails Date: Wed, 4 Mar 2020 07:51:02 +0000 Message-Id: <20200304075102.23430-1-ap420073@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When rmnet netlink command fails, it doesn't print any error message. So, users couldn't know the exact reason. In order to tell the exact reason to the user, the extack error message is used in this patch. Signed-off-by: Taehee Yoo --- .../ethernet/qualcomm/rmnet/rmnet_config.c | 31 +++++++++++++------ .../net/ethernet/qualcomm/rmnet/rmnet_vnd.c | 11 ++++--- .../net/ethernet/qualcomm/rmnet/rmnet_vnd.h | 3 +- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c index d846a0ccea8f..c2fee2b1e8e4 100644 --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c @@ -122,11 +122,10 @@ static int rmnet_newlink(struct net *src_net, struct net_device *dev, } real_dev = __dev_get_by_index(src_net, nla_get_u32(tb[IFLA_LINK])); - if (!real_dev || !dev) + if (!real_dev) { + NL_SET_ERR_MSG_MOD(extack, "link does not exist"); return -ENODEV; - - if (!data[IFLA_RMNET_MUX_ID]) - return -EINVAL; + } ep = kzalloc(sizeof(*ep), GFP_ATOMIC); if (!ep) @@ -139,7 +138,7 @@ static int rmnet_newlink(struct net *src_net, struct net_device *dev, goto err0; port = rmnet_get_port_rtnl(real_dev); - err = rmnet_vnd_newlink(mux_id, dev, port, real_dev, ep); + err = rmnet_vnd_newlink(mux_id, dev, port, real_dev, ep, extack); if (err) goto err1; @@ -263,12 +262,16 @@ static int rmnet_rtnl_validate(struct nlattr *tb[], struct nlattr *data[], { u16 mux_id; - if (!data || !data[IFLA_RMNET_MUX_ID]) + if (!data || !data[IFLA_RMNET_MUX_ID]) { + NL_SET_ERR_MSG_MOD(extack, "MUX ID not specifies"); return -EINVAL; + } mux_id = nla_get_u16(data[IFLA_RMNET_MUX_ID]); - if (mux_id > (RMNET_MAX_LOGICAL_EP - 1)) + if (mux_id > (RMNET_MAX_LOGICAL_EP - 1)) { + NL_SET_ERR_MSG_MOD(extack, "invalid MUX ID"); return -ERANGE; + } return 0; } @@ -406,14 +409,22 @@ int rmnet_add_bridge(struct net_device *rmnet_dev, /* If there is more than one rmnet dev attached, its probably being * used for muxing. Skip the briding in that case */ - if (port->nr_rmnet_devs > 1) + if (port->nr_rmnet_devs > 1) { + NL_SET_ERR_MSG_MOD(extack, "more than one rmnet dev attached"); return -EINVAL; + } - if (port->rmnet_mode != RMNET_EPMODE_VND) + if (port->rmnet_mode != RMNET_EPMODE_VND) { + NL_SET_ERR_MSG_MOD(extack, "bridge device already exists"); return -EINVAL; + } + + if (rmnet_is_real_dev_registered(slave_dev)) { + NL_SET_ERR_MSG_MOD(extack, + "dev is already attached another rmnet dev"); - if (rmnet_is_real_dev_registered(slave_dev)) return -EBUSY; + } err = rmnet_register_real_device(slave_dev); if (err) diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c index 26ad40f19c64..d7c52e398e4a 100644 --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c @@ -222,16 +222,17 @@ void rmnet_vnd_setup(struct net_device *rmnet_dev) int rmnet_vnd_newlink(u8 id, struct net_device *rmnet_dev, struct rmnet_port *port, struct net_device *real_dev, - struct rmnet_endpoint *ep) + struct rmnet_endpoint *ep, + struct netlink_ext_ack *extack) + { struct rmnet_priv *priv = netdev_priv(rmnet_dev); int rc; - if (ep->egress_dev) - return -EINVAL; - - if (rmnet_get_endpoint(port, id)) + if (rmnet_get_endpoint(port, id)) { + NL_SET_ERR_MSG_MOD(extack, "MUX ID already exists"); return -EBUSY; + } rmnet_dev->hw_features = NETIF_F_RXCSUM; rmnet_dev->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.h b/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.h index 14d77c709d4a..4967f3461ed1 100644 --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.h +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.h @@ -11,7 +11,8 @@ int rmnet_vnd_do_flow_control(struct net_device *dev, int enable); int rmnet_vnd_newlink(u8 id, struct net_device *rmnet_dev, struct rmnet_port *port, struct net_device *real_dev, - struct rmnet_endpoint *ep); + struct rmnet_endpoint *ep, + struct netlink_ext_ack *extack); int rmnet_vnd_dellink(u8 id, struct rmnet_port *port, struct rmnet_endpoint *ep); void rmnet_vnd_rx_fixup(struct sk_buff *skb, struct net_device *dev); From patchwork Wed Mar 4 07:51:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1248864 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=mNQ8ycTk; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48XR0C6M3fz9s3x for ; Wed, 4 Mar 2020 18:51:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728731AbgCDHvX (ORCPT ); Wed, 4 Mar 2020 02:51:23 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:39657 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726137AbgCDHvW (ORCPT ); Wed, 4 Mar 2020 02:51:22 -0500 Received: by mail-pf1-f195.google.com with SMTP id l7so545111pff.6 for ; Tue, 03 Mar 2020 23:51:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=24e3swqqvf/16vAYOjRyHuOVu6a4jtSq56QbHslKwTo=; b=mNQ8ycTkk5HjJr/6M80V0VCip4jeKRSUD9lG4c//Xgyj2yQwysfJcIB0ZETR9q3dDr YBmi5DWdIr9Jn8k/Y8xgwnkJmpFMk7qsrZqBnhUbvex1w5+dL824YRlLWhwxiCtAao+5 Z0reJ5o78TaSn3JRTkumb+c0vT4VRNH5PfZtv7T4yM4UPglSBnnI1ZAWTkKl6qgrBBGv lOwuOiBi+vk/UImfKoU2TMFfTq/HnTU9FONOxYN7CvzvSgIaMoLKZRTIZ7YFBx9TQ5OJ 4XCJXfZm1FYlRJIZDCL9sqzyH9MPBlrUeBlz3rTDnRCfIPvy4c9RVXZZ+WLZCQU1KJ7o AJrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=24e3swqqvf/16vAYOjRyHuOVu6a4jtSq56QbHslKwTo=; b=FrG4t7nf2w2ypu6fxU3FcMmNN/M7HwMOxaG7j4kjwkwvOZfMJigLeginvSjSR6sWxh QxMLJx+jdlP7ITjfkJGTBrWhxJefS1d4aeQ+WjCYm3CpEn5f5CmVKug5gqqtluemCiwf ZCQQRz7cygaFR1hbZu04KHBI1PsJbEkyAhIzBFg4Q6rZ2PMOmYErTcpbxH9FhKikOEsB 5FI7JL1VZQeCYIZN155GZAx973rb6xAMmZuAIVH0UyMjG2fAKub6/SNkgTBeHQsJXd/5 wY2kC9qdmDTuic9IhzhssAsapTBiINRbua9f4w5ZtnR6pkwOnP5sOxlQ1yB4CZddsR/W 5pgQ== X-Gm-Message-State: ANhLgQ2myiHSgDFRbIYOJoVP+1nsHl9PItv3o9a1SN6tqwpAWykmPt2e xnuAR8Gpewp44pNe1Bpe3Oo= X-Google-Smtp-Source: ADFU+vvc+KYIA4spo4O3HxqLveVN4Z0dN7mlwzwQ/TRLJLfzmnOGjRrbi5HVQhTjr5ZW63oy7APeHw== X-Received: by 2002:a65:5b0f:: with SMTP id y15mr1449707pgq.258.1583308281792; Tue, 03 Mar 2020 23:51:21 -0800 (PST) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id d186sm8841988pfc.8.2020.03.03.23.51.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2020 23:51:20 -0800 (PST) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, subashab@codeaurora.org, stranche@codeaurora.org, netdev@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH net-next 3/3] net: rmnet: use GFP_KERNEL instead of GFP_ATOMIC Date: Wed, 4 Mar 2020 07:51:13 +0000 Message-Id: <20200304075113.23509-1-ap420073@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In the current code, rmnet_register_real_device() and rmnet_newlink() are using GFP_ATOMIC. But, these functions are allowed to sleep. So, GFP_KERNEL can be used in them. Signed-off-by: Taehee Yoo --- drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c index c2fee2b1e8e4..3d02d56199ca 100644 --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c @@ -57,7 +57,7 @@ static int rmnet_register_real_device(struct net_device *real_dev) if (rmnet_is_real_dev_registered(real_dev)) return 0; - port = kzalloc(sizeof(*port), GFP_ATOMIC); + port = kzalloc(sizeof(*port), GFP_KERNEL); if (!port) return -ENOMEM; @@ -127,7 +127,7 @@ static int rmnet_newlink(struct net *src_net, struct net_device *dev, return -ENODEV; } - ep = kzalloc(sizeof(*ep), GFP_ATOMIC); + ep = kzalloc(sizeof(*ep), GFP_KERNEL); if (!ep) return -ENOMEM;