Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp308166pxx; Wed, 28 Oct 2020 05:34:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyK0sxTJYgbBSXJvGMlqcVT7LYTVYJQL0nn1pFTgRhJ8OtOmV8nsQdLNfPFSzTp2HWehC6D X-Received: by 2002:a50:cf45:: with SMTP id d5mr7265075edk.225.1603888445892; Wed, 28 Oct 2020 05:34:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603888445; cv=none; d=google.com; s=arc-20160816; b=VFkrg+xSdKuLN/jFZWLTf513wfY1bDsZVrxSmpecZES+/++8oZiGdBck2xNrA908Xl 8p7+x4z86wep+GcC8cKb2KmKV/v0wqJ7XF7FM7BAg26yDW19NE2mizEgYagpzSozctDz WN1wUA7OcWozQ5cvMZdfUr9vjis7X+Z89QE6UIk6RDpA1u7xDTcp9uDpKL8ZLEGp+00X rhjSYrsFt04H5Ro/sg7m7vO100hmX9rBJ/F4+RLSzSnSMsmn3jq8oLopqghqqzSqqBqW N1BTI2FIKWE7z7Lwzk4wkPpdI6e+bIAGOdwd6UEonsElkiOitB7dJUkpBbqMT0HXS8EA IisA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=FP+KAbIFM9DD5xwlXZHvd4roC/V0xf8fHe2Z4EyK9FY=; b=wqHxS3cheS++XbABUvwhLPL/qDeBmkKgZ/Jjs8cv6HnXPeheyuoXlPssk9Qh3Mt7qX 2dqQrPLTFR8tGseJ179xAw0fgwHkefkrA7QchE9mUUloLlKMjEb2paKxYfCMScADBX6N G0xZbJ+TelFuHLq1VnLJFkUW/Q1GRKDqZyeM12bT3dbfYJcOqeOygByWduhYXhKywow6 hmBHX3dlxxtbvps2sjfk7ef2egzCBxKzySRBnbq0bq3MowM0/I41uUvNlFOwgzpy06hD ECXdd3Vorp6dfhN6aZ8JHMRaMTw0pvPuq75QgFltG5P25rfZjdFfuAcgwFXhd6ckcrjp ctIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jupKh+I+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bt10si1135660edb.503.2020.10.28.05.33.43; Wed, 28 Oct 2020 05:34:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jupKh+I+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1797222AbgJ0PWR (ORCPT + 99 others); Tue, 27 Oct 2020 11:22:17 -0400 Received: from mail.kernel.org ([198.145.29.99]:60900 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1796829AbgJ0PUE (ORCPT ); Tue, 27 Oct 2020 11:20:04 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (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 E693721527; Tue, 27 Oct 2020 15:20:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603812003; bh=hMMjolOHhezTfEboHVT4V0QWkMrOOg2PC5xiFDOy9FI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jupKh+I+AnXKc6+r+CzVqfxyH57SNA2+DEplhvTFtutn1hwQQ26yUycPMAWYVXdcc k/oHIyXGPO3BcRH8WjlfwsPrkC+iigvp54+bEhgqVsSeLEpnJqoq/FJmH2+VPnocam XVDIvBOdsz2xLEOB2VaRHeapHi9bTiAY36yfPMVQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Krzysztof Halasa , Xie He , Jakub Kicinski Subject: [PATCH 5.9 041/757] net: hdlc: In hdlc_rcv, check to make sure dev is an HDLC device Date: Tue, 27 Oct 2020 14:44:51 +0100 Message-Id: <20201027135452.451875263@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027135450.497324313@linuxfoundation.org> References: <20201027135450.497324313@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xie He [ Upstream commit 01c4ceae0a38a0bdbfea6896f41efcd985a9c064 ] The hdlc_rcv function is used as hdlc_packet_type.func to process any skb received in the kernel with skb->protocol == htons(ETH_P_HDLC). The purpose of this function is to provide second-stage processing for skbs not assigned a "real" L3 skb->protocol value in the first stage. This function assumes the device from which the skb is received is an HDLC device (a device created by this module). It assumes that netdev_priv(dev) returns a pointer to "struct hdlc_device". However, it is possible that some driver in the kernel (not necessarily in our control) submits a received skb with skb->protocol == htons(ETH_P_HDLC), from a non-HDLC device. In this case, the skb would still be received by hdlc_rcv. This will cause problems. hdlc_rcv should be able to recognize and drop invalid skbs. It should first make sure "dev" is actually an HDLC device, before starting its processing. This patch adds this check to hdlc_rcv. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Cc: Krzysztof Halasa Signed-off-by: Xie He Link: https://lore.kernel.org/r/20201020013152.89259-1-xie.he.0141@gmail.com Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- drivers/net/wan/hdlc.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) --- a/drivers/net/wan/hdlc.c +++ b/drivers/net/wan/hdlc.c @@ -46,7 +46,15 @@ static struct hdlc_proto *first_proto; static int hdlc_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *p, struct net_device *orig_dev) { - struct hdlc_device *hdlc = dev_to_hdlc(dev); + struct hdlc_device *hdlc; + + /* First make sure "dev" is an HDLC device */ + if (!(dev->priv_flags & IFF_WAN_HDLC)) { + kfree_skb(skb); + return NET_RX_SUCCESS; + } + + hdlc = dev_to_hdlc(dev); if (!net_eq(dev_net(dev), &init_net)) { kfree_skb(skb);