From patchwork Wed Mar 4 23:24:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1249333 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=nmCXeLIH; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48XqjK1rg6z9s3x for ; Thu, 5 Mar 2020 10:24:53 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388520AbgCDXYw (ORCPT ); Wed, 4 Mar 2020 18:24:52 -0500 Received: from mail-pl1-f196.google.com ([209.85.214.196]:46018 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388412AbgCDXYv (ORCPT ); Wed, 4 Mar 2020 18:24:51 -0500 Received: by mail-pl1-f196.google.com with SMTP id b22so1737513pls.12 for ; Wed, 04 Mar 2020 15:24:50 -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=xCDJEsdEpetrVOPMfXMpvNKqwuCy4QkRdRwox/YgAiU=; b=nmCXeLIH3weW+iqsGNcxmeKcsrzfh0PWYfmqCenYycUuoqmA2a033+Cljn53Xkz6lY 4OzQT5Yp07j7tPRO/FN+V9qvazL4TDSd2l6G4iOhJQBZZvzgdJj9xp5/4eoIqZ8csemz hrboLYlTdwueYgqzQGLIN43VJ21lsRDp8l7WmbnG1gcLwlmCBXvPk90RMKvDGK/iHn3v k3BfSYmestcfJwfUxm5KEa8dtwJaDDmXQDMaX0t5RwoeqX6tk64qbO6mhtz7s+fVEgpu 94/xbI0EA5LVfK4Ie1lrE2mspNpfTeJoi8MUbNFvndOCP+SwQNBKN2HNsrEBo8HEwmTu wLsA== 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=xCDJEsdEpetrVOPMfXMpvNKqwuCy4QkRdRwox/YgAiU=; b=TpwPunmGLT4/BmDuainXKWGXdiM4fXdN8zLY7TfgKIhzZvf7XZwPHXznw1c6xRqK3H +dDXpsSMhsEsTeNteFaBrzba0yjpIz4SsG7eu1zNZwNzxmPqYGf4ldOPkklFWiwJYZeD ik9ebt1IJvk9SFRaSEvWU0BsB5QM8VYAapntWrRP45ZkttYHsoikkwreNFNdTiRCrnYu 0HRRDNVg17hzLSmo9l6iRHYVh/59A2QSnd0exP80gHvceYiYksXfKv8lRSzKMId90ZpZ dZAY+jWXIHe61Yn76i+BF+YjMBUaYCQ9esxAY0WF9XT5NPSqezoVGKt186BAbktFCn/X nl0A== X-Gm-Message-State: ANhLgQ30V1bXBI+GcbeYqX0p8mzxG5i3H+wN8L14XztRkJCP7gWfDWqm 4klM0JbmTUbzznvY4dlNQhM= X-Google-Smtp-Source: ADFU+vvIjAoxuq/Q6jW/J2IeEkpRMx85Wvg1q58jlsvUMl/j0nXuRl8y7W8zqOL6FMG7u2ALNUZcPw== X-Received: by 2002:a17:902:b40c:: with SMTP id x12mr5293917plr.70.1583364289612; Wed, 04 Mar 2020 15:24:49 -0800 (PST) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id n9sm25784894pfq.160.2020.03.04.15.24.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2020 15:24:48 -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 v2 1/3] net: rmnet: add missing module alias Date: Wed, 4 Mar 2020 23:24:42 +0000 Message-Id: <20200304232442.12335-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 --- v1->v2: - This patch is not changed 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 23:25:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1249334 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=p9J0xTnF; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48Xqk5412Fz9s3x for ; Thu, 5 Mar 2020 10:25:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388574AbgCDXZc (ORCPT ); Wed, 4 Mar 2020 18:25:32 -0500 Received: from mail-pj1-f67.google.com ([209.85.216.67]:54941 "EHLO mail-pj1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388476AbgCDXZc (ORCPT ); Wed, 4 Mar 2020 18:25:32 -0500 Received: by mail-pj1-f67.google.com with SMTP id np16so1041833pjb.4 for ; Wed, 04 Mar 2020 15:25:30 -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=7OMA8NCI6I4hn1twy2JCpkX3Jqjbh0j+Qa/Gmrv8vAk=; b=p9J0xTnFdg4udGN5JQN4GvveWP01oIjbO5wG7kicI4F8LCDHN19M9piiFqUMJ2QkeN MUTqznkCLU8JscqK6uEgjG+j02lvhBliiG2iytrLH3Iy9XfInkzjumkPoM0b83ktktHD WBLzShW46bFbbiqZEXR93Edk1Fk2DJMLKQ22lhxLTUsu9JIpm+9/wxrYXzgJyGk2Z14X ZTdO50FCe7a9Ulus69S84NyWtA1ogNeUHdOVMVfd2yGcBGorZGLZsyoIQyR4LbGOVSUu 2vk77WQtTIcLnDrJB2a34b6w6E9CdVRpjSCakczib0v8Jw/tO2rNglSJaMeSKZkQhrQB QWIA== 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=7OMA8NCI6I4hn1twy2JCpkX3Jqjbh0j+Qa/Gmrv8vAk=; b=laoU4/klRpQCJuv5obWFrhVLJFprJVRJUMSaWvQ+wFNz4kjz+e3kg/w9bwgbWWjEDl gIOdQxCg7Y3yKC3fwn+sotIMZaC6f1bMAZyPTUbtvPViv1KeEPCEFSUWa+noRd/VhRzg hTHpFelHVKZGHMNFYs34l3iLr+UzJULnRDr60m8jxZfc6Dv2F1X4kUUHCKUlXAuudFiT ZPNpL7da34bQ49OERkI6B6ysyuaiFhDpfqg8n70LqZ9GErunjcnaRKS/iuNR7GLmuPaz tqWttWxofw1iZoJ0IOUCLydvmMtukrtDdAmvWR64/P6cj70eTvecE39NnOp4sy6YeT9t Je7A== X-Gm-Message-State: ANhLgQ1hm+XTXktKY/cHfUu5e5YHI3Vy1OYxyL8UgMtChtHetvZtUYnW lvkJfa7pw0V6HemBdkNisyU= X-Google-Smtp-Source: ADFU+vvkPw8hbq0X3wIqW5elaLko5CSXmm04JIQ8D+g5FmYGXzf85kjcNY1pqj6TuXaL96SCprc2vg== X-Received: by 2002:a17:90a:db4b:: with SMTP id u11mr5437056pjx.105.1583364329473; Wed, 04 Mar 2020 15:25:29 -0800 (PST) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id q187sm29196401pfq.185.2020.03.04.15.25.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2020 15:25:28 -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 v2 2/3] net: rmnet: print error message when command fails Date: Wed, 4 Mar 2020 23:25:22 +0000 Message-Id: <20200304232522.12473-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 --- v1->v2: - Update error messages .../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..63d0c2017ee5 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 specified"); 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, + "slave cannot be 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 23:25:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1249335 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=fo76lB/M; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48XqkW64r7z9sPg for ; Thu, 5 Mar 2020 10:25:55 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388647AbgCDXZy (ORCPT ); Wed, 4 Mar 2020 18:25:54 -0500 Received: from mail-pf1-f193.google.com ([209.85.210.193]:41789 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388513AbgCDXZx (ORCPT ); Wed, 4 Mar 2020 18:25:53 -0500 Received: by mail-pf1-f193.google.com with SMTP id z65so1277641pfz.8 for ; Wed, 04 Mar 2020 15:25:53 -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=9kK2gp8lH7DW4mExEB7VoodT66C5LLSkZSrlV7lTjOo=; b=fo76lB/MFXly1m9FTH7DfY8HBuYzJggI0umek+h4CBDoWcEidpSsv3thfLbt2CM6xY pNsYoqUz80ErbDMTmIJzOQdZ1L6wou8hAILc+jloKmS3XGhEYL+AlxxosEBUOO4QpscR CbVtJBSNcnKVGZisf+Sv773xrsp80GgBIzd7DCIGGkoBILb++yAN9HfMgu4//zYIps5B 69/EdFyC9+vof7OrPf2gp1HbwQEeGl2LX8cAFXzVM10wdgyPLDbP4IU30OK/DFXlGmj8 NydsEjXEu7z7+ytEeX5YjRc56b/xWfAaeg0M4XLTuKX3fUqoKjZSvK0+3t1pqYOCPa2E MeQA== 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=9kK2gp8lH7DW4mExEB7VoodT66C5LLSkZSrlV7lTjOo=; b=p8kXEDDshKqdeGo03QaWjyo5YrAhqpaZ67CDH2TkkmVNkgZ/Ny3/I1j2OxhHRVnYOH eMhcl/7rhdlBta7rZq3ukQuagx1EioZkaos52qba4ZSXYq50wsFA+cVcOVvTzwFgUNPU vNT9Vuc44EVwch7JW/HFRCI4OwU9+5x3v4JWj7GvF7FJRzkLvV47gq1LPBa3MhNbGHYC chHt00rQ39oo/8uQwYiJ7xbCnleFosM5kOK3LuLl3VF7IyGbxh8HntGQpXgwBOCAz393 RmXjKb4QAhjENRTf7mOVcMOdhrVptrJI+nKFNwvLJUrRe3Bd7xeLBxPEKG8xFiWJ7ebI XxwA== X-Gm-Message-State: ANhLgQ3yksCw+80Y4Z0BYPUPnVS0sDU4pibut5j6o+9OWUdnGpyc2ACr 2dYtLu+VbpVo9WnvvVrDEz4= X-Google-Smtp-Source: ADFU+vvpCaKpmF/0U00E36N50kl7wBCwvhlun4jPbovMUyIMTu7oIUyH13cVCt6naKwKYQKuJ9sE/A== X-Received: by 2002:a63:d0c:: with SMTP id c12mr4702005pgl.173.1583364352705; Wed, 04 Mar 2020 15:25:52 -0800 (PST) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id 70sm3724228pjz.45.2020.03.04.15.25.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2020 15:25:51 -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 v2 3/3] net: rmnet: use GFP_KERNEL instead of GFP_ATOMIC Date: Wed, 4 Mar 2020 23:25:43 +0000 Message-Id: <20200304232543.12589-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. Signed-off-by: Taehee Yoo --- v1->v2: - This patch is not changed 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 63d0c2017ee5..1305522f72d6 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;