Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp104146imu; Wed, 21 Nov 2018 16:13:15 -0800 (PST) X-Google-Smtp-Source: AJdET5cuMGrEN8A15GpVn/IB9KHqAz75b5qWLajtXmZUQXio6bW0+fLfzZawibjn/egUBfwDbJIK X-Received: by 2002:a62:e501:: with SMTP id n1-v6mr9007669pff.71.1542845595895; Wed, 21 Nov 2018 16:13:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542845595; cv=none; d=google.com; s=arc-20160816; b=BPRR5NewuXMg2O0NaoPyDpVHVxGTRziSwTHVwDIKE+y2jx9jIQTGSA6vNK1ohB/JOP +hKwPlqdejPtx2pWuDTJlxP0bwIpsuiKvqzqUDm5nfbFbQpDHzXrOM1NmjF3GCdDgEki w08ubpaH0ib+7x/HxHLAKshJE/cvDWcsx9SVIsFErXMpvqZUx9WJOCm6F8bJQh5bYKqc GSZJIiQD65c58eaAsen3aLQ6A/8H2vtCBf/qqX1Gro6YKjTYnbymO4QOwXHpITMjZw3Q rcUD2nAbebNjyNRuWgR4FmMXxLQd2BAwYttRFFl/X8mKMYiMUVv19fqVbDPcapIKpgyw vxlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=8u5FKgYwfTZsOs6lYLa7TTQlcb+/7FAnMoUR/NxZEkE=; b=ZreBAZKvFjqXRHgf7/mLACvvgJPvg6n7ssL3P2QGm0/PXu6JVSeRhOp3TJE1a2iRiX 38I8mO9a/wU7h/fC8m7P/sAt7SzmFEVVgkuJIdTTH9maxecxRJj3/k6x16QYi/uMIibL ho3TfNHUEpfX34/AwnPX8TQ25Br1JSdUq5W25XdS4wxknjeNc52RDQYo1uo056sj11YD LeR/D7zi9QYL5tRtZ7jEiWLAVmj+YdV/tSgHS/etkKYGRtl9eWcwBahBhRK38kPYy/43 mnQTnGlu3nanQtSBm1HqxGHzRlr6WuWXYbJ8ML0bIzFyTY4uHQurw4eSiEqMgw0Jy70k 7htw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="j/X8t6zk"; 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 l64si45028709pge.168.2018.11.21.16.13.01; Wed, 21 Nov 2018 16:13:15 -0800 (PST) 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=@kernel.org header.s=default header.b="j/X8t6zk"; 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 S2388217AbeKVFo0 (ORCPT + 99 others); Thu, 22 Nov 2018 00:44:26 -0500 Received: from mail.kernel.org ([198.145.29.99]:38938 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726862AbeKVFoZ (ORCPT ); Thu, 22 Nov 2018 00:44:25 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5985A214DB; Wed, 21 Nov 2018 19:08:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542827332; bh=ur1QZ9K0m5F8t12zF2B0mlrjB0f8L1FcdgTGigBgXF0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=j/X8t6zkNbmfR6kkdyRacUhphKh0XUCiBKRlXjTziyzQ36ScH7T5ckGLTIp+5M8w/ FTRk+o847aMDB7X4HD7QjfVd/5ODzGFhSgJ4io2vQYPSii5xwmwg7gXdO9VHM53ISw 60J7Oiuhm4ZtHwEmWw291nbdUepD90XyskeWazrY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sean Tranchetti , Subash Abhinov Kasiviswanathan , "David S. Miller" Subject: [PATCH 4.14 10/21] net: qualcomm: rmnet: Fix incorrect assignment of real_dev Date: Wed, 21 Nov 2018 20:06:54 +0100 Message-Id: <20181121183422.504202042@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181121183422.103826775@linuxfoundation.org> References: <20181121183422.103826775@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Subash Abhinov Kasiviswanathan [ Upstream commit d02854dc1999ed3e7fd79ec700c64ac23ac0c458 ] A null dereference was observed when a sysctl was being set from userspace and rmnet was stuck trying to complete some actions in the NETDEV_REGISTER callback. This is because the real_dev is set only after the device registration handler completes. sysctl call stack - <6> Unable to handle kernel NULL pointer dereference at virtual address 00000108 <2> pc : rmnet_vnd_get_iflink+0x1c/0x28 <2> lr : dev_get_iflink+0x2c/0x40 <2> rmnet_vnd_get_iflink+0x1c/0x28 <2> inet6_fill_ifinfo+0x15c/0x234 <2> inet6_ifinfo_notify+0x68/0xd4 <2> ndisc_ifinfo_sysctl_change+0x1b8/0x234 <2> proc_sys_call_handler+0xac/0x100 <2> proc_sys_write+0x3c/0x4c <2> __vfs_write+0x54/0x14c <2> vfs_write+0xcc/0x188 <2> SyS_write+0x60/0xc0 <2> el0_svc_naked+0x34/0x38 device register call stack - <2> notifier_call_chain+0x84/0xbc <2> raw_notifier_call_chain+0x38/0x48 <2> call_netdevice_notifiers_info+0x40/0x70 <2> call_netdevice_notifiers+0x38/0x60 <2> register_netdevice+0x29c/0x3d8 <2> rmnet_vnd_newlink+0x68/0xe8 <2> rmnet_newlink+0xa0/0x160 <2> rtnl_newlink+0x57c/0x6c8 <2> rtnetlink_rcv_msg+0x1dc/0x328 <2> netlink_rcv_skb+0xac/0x118 <2> rtnetlink_rcv+0x24/0x30 <2> netlink_unicast+0x158/0x1f0 <2> netlink_sendmsg+0x32c/0x338 <2> sock_sendmsg+0x44/0x60 <2> SyS_sendto+0x150/0x1ac <2> el0_svc_naked+0x34/0x38 Fixes: b752eff5be24 ("net: qualcomm: rmnet: Implement ndo_get_iflink") Signed-off-by: Sean Tranchetti Signed-off-by: Subash Abhinov Kasiviswanathan Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c @@ -102,12 +102,14 @@ int rmnet_vnd_newlink(u8 id, struct net_ struct rmnet_port *port, struct net_device *real_dev) { - struct rmnet_priv *priv; + struct rmnet_priv *priv = netdev_priv(rmnet_dev); int rc; if (port->rmnet_devices[id]) return -EINVAL; + priv->real_dev = real_dev; + rc = register_netdevice(rmnet_dev); if (!rc) { port->rmnet_devices[id] = rmnet_dev; @@ -115,9 +117,7 @@ int rmnet_vnd_newlink(u8 id, struct net_ rmnet_dev->rtnl_link_ops = &rmnet_link_ops; - priv = netdev_priv(rmnet_dev); priv->mux_id = id; - priv->real_dev = real_dev; netdev_dbg(rmnet_dev, "rmnet dev created\n"); }