All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Phillip Potter <phil@philpotter.co.uk>,
	syzbot+001516d86dbe88862cec@syzkaller.appspotmail.com,
	Eric Dumazet <edumazet@google.com>,
	"David S . Miller" <davem@davemloft.net>,
	Sasha Levin <sashal@kernel.org>,
	netdev@vger.kernel.org
Subject: [PATCH AUTOSEL 5.11 44/51] net: tun: set tun->dev->addr_len during TUNSETLINK processing
Date: Mon, 12 Apr 2021 12:22:49 -0400	[thread overview]
Message-ID: <20210412162256.313524-44-sashal@kernel.org> (raw)
In-Reply-To: <20210412162256.313524-1-sashal@kernel.org>

From: Phillip Potter <phil@philpotter.co.uk>

[ Upstream commit cca8ea3b05c972ffb5295367e6c544369b45fbdd ]

When changing type with TUNSETLINK ioctl command, set tun->dev->addr_len
to match the appropriate type, using new tun_get_addr_len utility function
which returns appropriate address length for given type. Fixes a
KMSAN-found uninit-value bug reported by syzbot at:
https://syzkaller.appspot.com/bug?id=0766d38c656abeace60621896d705743aeefed51

Reported-by: syzbot+001516d86dbe88862cec@syzkaller.appspotmail.com
Diagnosed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Phillip Potter <phil@philpotter.co.uk>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/tun.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 5512418b7be0..2ed54818dcbc 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -69,6 +69,14 @@
 #include <linux/bpf.h>
 #include <linux/bpf_trace.h>
 #include <linux/mutex.h>
+#include <linux/ieee802154.h>
+#include <linux/if_ltalk.h>
+#include <uapi/linux/if_fddi.h>
+#include <uapi/linux/if_hippi.h>
+#include <uapi/linux/if_fc.h>
+#include <net/ax25.h>
+#include <net/rose.h>
+#include <net/6lowpan.h>
 
 #include <linux/uaccess.h>
 #include <linux/proc_fs.h>
@@ -2925,6 +2933,45 @@ static int tun_set_ebpf(struct tun_struct *tun, struct tun_prog __rcu **prog_p,
 	return __tun_set_ebpf(tun, prog_p, prog);
 }
 
+/* Return correct value for tun->dev->addr_len based on tun->dev->type. */
+static unsigned char tun_get_addr_len(unsigned short type)
+{
+	switch (type) {
+	case ARPHRD_IP6GRE:
+	case ARPHRD_TUNNEL6:
+		return sizeof(struct in6_addr);
+	case ARPHRD_IPGRE:
+	case ARPHRD_TUNNEL:
+	case ARPHRD_SIT:
+		return 4;
+	case ARPHRD_ETHER:
+		return ETH_ALEN;
+	case ARPHRD_IEEE802154:
+	case ARPHRD_IEEE802154_MONITOR:
+		return IEEE802154_EXTENDED_ADDR_LEN;
+	case ARPHRD_PHONET_PIPE:
+	case ARPHRD_PPP:
+	case ARPHRD_NONE:
+		return 0;
+	case ARPHRD_6LOWPAN:
+		return EUI64_ADDR_LEN;
+	case ARPHRD_FDDI:
+		return FDDI_K_ALEN;
+	case ARPHRD_HIPPI:
+		return HIPPI_ALEN;
+	case ARPHRD_IEEE802:
+		return FC_ALEN;
+	case ARPHRD_ROSE:
+		return ROSE_ADDR_LEN;
+	case ARPHRD_NETROM:
+		return AX25_ADDR_LEN;
+	case ARPHRD_LOCALTLK:
+		return LTALK_ALEN;
+	default:
+		return 0;
+	}
+}
+
 static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
 			    unsigned long arg, int ifreq_len)
 {
@@ -3088,6 +3135,7 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
 				break;
 			}
 			tun->dev->type = (int) arg;
+			tun->dev->addr_len = tun_get_addr_len(tun->dev->type);
 			netif_info(tun, drv, tun->dev, "linktype set to %d\n",
 				   tun->dev->type);
 			call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE,
-- 
2.30.2


  parent reply	other threads:[~2021-04-12 16:26 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-12 16:22 [PATCH AUTOSEL 5.11 01/51] net: ieee802154: fix nl802154 del llsec key Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 02/51] net: ieee802154: fix nl802154 del llsec dev Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 03/51] net: ieee802154: fix nl802154 add llsec key Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 04/51] net: ieee802154: fix nl802154 del llsec devkey Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 05/51] net: ieee802154: nl-mac: fix check on panid Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 06/51] ARM: dts: Drop duplicate sha2md5_fck to fix clk_disable race Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 07/51] ARM: dts: Fix moving mmc devices with aliases for omap4 & 5 Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 08/51] remoteproc: pru: Fix loading of GNU Binutils ELF Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 09/51] lockdep: Add a missing initialization hint to the "INFO: Trying to register non-static key" message Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 10/51] arc: kernel: Return -EFAULT if copy_to_user() fails Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 11/51] iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_enqueue_hcmd() Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 12/51] xfrm: BEET mode doesn't support fragments for inner packets Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 13/51] ASoC: max98373: Changed amp shutdown register as volatile Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 14/51] ASoC: max98373: Added 30ms turn on/off time delay Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 15/51] net: axienet: allow setups without MDIO Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 16/51] gpu/xen: Fix a use after free in xen_drm_drv_init Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 17/51] bpf: Take module reference for trampoline in module Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 18/51] neighbour: Disregard DEAD dst in neigh_update Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 19/51] powerpc/signal32: Fix Oops on sigreturn with unmapped VDSO Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 20/51] ARM: keystone: fix integer overflow warning Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 21/51] ARM: omap1: fix building with clang IAS Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 22/51] drivers: net: fix memory leak in atusb_probe Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 23/51] drivers: net: fix memory leak in peak_usb_create_dev Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 24/51] drm/msm: Fix a5xx/a6xx timestamps Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 25/51] ASoC: fsl_esai: Fix TDM slot setup for I2S mode Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 26/51] scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 27/51] iwlwifi: add support for Qu with AX201 device Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 28/51] net: ieee802154: forbid monitor for set llsec params Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 29/51] net: ieee802154: stop dump llsec keys for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 30/51] net: ieee802154: forbid monitor for add llsec key Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 31/51] net: ieee802154: forbid monitor for del " Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 32/51] net: ieee802154: stop dump llsec devs for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 33/51] net: ieee802154: forbid monitor for add llsec dev Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 34/51] net: ieee802154: forbid monitor for del " Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 35/51] net: ieee802154: stop dump llsec devkeys for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 36/51] net: ieee802154: forbid monitor for add llsec devkey Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 37/51] net: ieee802154: forbid monitor for del " Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 38/51] net: ieee802154: stop dump llsec seclevels for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 39/51] net: ieee802154: forbid monitor for add llsec seclevel Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 40/51] net: ieee802154: forbid monitor for del " Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 41/51] net: ieee802154: stop dump llsec params for monitors Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 42/51] net: mac802154: Fix general protection fault Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 43/51] pcnet32: Use pci_resource_len to validate PCI resource Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` Sasha Levin [this message]
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 45/51] net/rds: Avoid potential use after free in rds_send_remove_from_sock Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 46/51] net: tipc: Fix spelling errors in net/tipc module Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 47/51] drm/amd/display: Add missing mask for DCN3 Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22   ` Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 48/51] mac80211: clear sta->fast_rx when STA removed from 4-addr VLAN Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 49/51] cfg80211: remove WARN_ON() in cfg80211_sme_connect Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 50/51] virt_wifi: Return micros for BSS TSF values Sasha Levin
2021-04-12 16:22 ` [PATCH AUTOSEL 5.11 51/51] lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS 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=20210412162256.313524-44-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=phil@philpotter.co.uk \
    --cc=stable@vger.kernel.org \
    --cc=syzbot+001516d86dbe88862cec@syzkaller.appspotmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.