From patchwork Mon Feb 18 22:30:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1044355 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 (mailfrom) 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.b="f3aDYoTF"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 443JTr2TXYz9s3x for ; Tue, 19 Feb 2019 09:30:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731801AbfBRWaS (ORCPT ); Mon, 18 Feb 2019 17:30:18 -0500 Received: from mail-ot1-f68.google.com ([209.85.210.68]:44280 "EHLO mail-ot1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729048AbfBRWaS (ORCPT ); Mon, 18 Feb 2019 17:30:18 -0500 Received: by mail-ot1-f68.google.com with SMTP id g1so30881915otj.11; Mon, 18 Feb 2019 14:30:17 -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:mime-version :content-transfer-encoding; bh=37AB+jKFBj4540g7viQ3gpj5b0bjpTaQ1GOL6HQCd1o=; b=f3aDYoTF7zPsUTHFgcpAnYz2xMJDSxyxyVR4zMkvoSsYjzZwCz9p8RM/UatbB99dBk MpiXloYYxYRy/iusGIRGZIJSIAMarEnpqcYgPambThmPzb2SFtaqEwCWb8t1CEizLDW5 CElRBvsICM/UogGbs/g6rtIHbf+mhO66USygXb0QhLmtqEhLQIK5g/PpGOoLQXMIA+TQ Dy7hE8UZAulpfkcVOa7NFzZms5uR01S3jQ6pv6uLjpWHIxLw8ecrtag/WyQ1vck063xa CyKJ+Gu2Gdq7razrJkLmF1Xr06puB72jJBTk7OT54oH1FoCqVdMuip3y3g+AjXhUx2PX gI+w== 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:mime-version :content-transfer-encoding; bh=37AB+jKFBj4540g7viQ3gpj5b0bjpTaQ1GOL6HQCd1o=; b=IJsLBW6M+J/r9LF32sZ4SRDSPR5ywlBPo0md/7y/b6LPneK4F5Xg7XWx2qEvvxO2FL TbqtQHCF+3F5A1EcLbLnbWgts+/TZ33ZO47aINXBDaq7lD9xB3rF6MZ6NcSAqn9mu3S+ R54tzWjG0QurllOWZsIOuYe2ur5vRdJjlEtMECsq99pR29vZ6D9bltGJk59wYAN5M3m0 UcO3CS733b4W52abGZkEyxreSJj7ZMuKWH9tPsv8f5gGTjnxvprA/bSaTQ/dq4bXE7jZ Od6QjT4n7qo/opvsK8tHuU80KEPa/rmuv2H8NqI7OPsD2XRgyELnz8khkSHcUvx/UHTo M0Ag== X-Gm-Message-State: AHQUAubSDct1aeCg52RbV+jChZA2/lvWomOUBzvDLeK0AFY+zuawLkxt Hsv/m6Zp7rRA8ucl3yl1YpUZoVH+ X-Google-Smtp-Source: AHgI3IbwK/kzB6IDvR9N8QtCzOEwIbbVQskA+d7gNpppfKY1Bvz/juRLzvRNRLDUMMkMe+XL2Us0kQ== X-Received: by 2002:aca:7201:: with SMTP id p1mr670614oic.159.1550529016637; Mon, 18 Feb 2019 14:30:16 -0800 (PST) Received: from localhost.localdomain (ip68-228-73-187.oc.oc.cox.net. [68.228.73.187]) by smtp.gmail.com with ESMTPSA id v20sm5539733oto.31.2019.02.18.14.30.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 18 Feb 2019 14:30:15 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, frank-w@public-files.de, Florian Fainelli , Andrew Lunn , Vivien Didelot , linux-kernel@vger.kernel.org (open list) Subject: [PATCH net v4.15..v4.19] net: dsa: Fix NPD checking for br_vlan_enabled() Date: Mon, 18 Feb 2019 14:30:11 -0800 Message-Id: <20190218223011.4824-1-f.fainelli@gmail.com> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org It is possible for the DSA slave network device not to be part of a bridge, yet have an upper device like a VLAN device be part of a bridge. When that VLAN device is enslaved, since it does not define any switchdev_ops, we will recurse down to the lower/physical port device, call switchdev_port_obj_add() with a VLAN, and here we will check br_vlan_enabled() on a NULL dp->bridge_dev, thus causing a NULL pointer de-reference. This is no longer a problem upstream after commit d17d9f5e5143 ("switchdev: Replace port obj add/del SDO with a notification"). Fixes: 2ea7a679ca2a ("net: dsa: Don't add vlans when vlan filtering is disabled") Reported-by: Frank Wunderlich Signed-off-by: Florian Fainelli --- David, This affects v4.15..v4.19, but not v5.0-rc1 can you still queue this up for -stable? Thanks! net/dsa/port.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/dsa/port.c b/net/dsa/port.c index ed0595459df1..792a13068c50 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -255,7 +255,7 @@ int dsa_port_vlan_add(struct dsa_port *dp, if (netif_is_bridge_master(vlan->obj.orig_dev)) return -EOPNOTSUPP; - if (br_vlan_enabled(dp->bridge_dev)) + if (dp->bridge_dev && br_vlan_enabled(dp->bridge_dev)) return dsa_port_notify(dp, DSA_NOTIFIER_VLAN_ADD, &info); return 0; @@ -273,7 +273,7 @@ int dsa_port_vlan_del(struct dsa_port *dp, if (netif_is_bridge_master(vlan->obj.orig_dev)) return -EOPNOTSUPP; - if (br_vlan_enabled(dp->bridge_dev)) + if (dp->bridge_dev && br_vlan_enabled(dp->bridge_dev)) return dsa_port_notify(dp, DSA_NOTIFIER_VLAN_DEL, &info); return 0;