From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 701C0C43381 for ; Sun, 17 Feb 2019 17:13:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 28E5F21917 for ; Sun, 17 Feb 2019 17:13:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jEh0DWBx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727148AbfBQRNV (ORCPT ); Sun, 17 Feb 2019 12:13:21 -0500 Received: from mail-pf1-f196.google.com ([209.85.210.196]:45479 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725810AbfBQRNU (ORCPT ); Sun, 17 Feb 2019 12:13:20 -0500 Received: by mail-pf1-f196.google.com with SMTP id v21so4324037pfm.12 for ; Sun, 17 Feb 2019 09:13:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:openpgp:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=wMErbeqtKsputYktuwhpnqIlvsBeG5wHQjf/d7U9x1w=; b=jEh0DWBxsjae+u7QU2RI5ldMXyUbi62lnQrN5RFiSdpWhf2sczt5pdMHT11ykFUzJa DYLRS1w5joUcXwj0L6wJOYGCijKleQ6b4llaHrmbHZt+ItQwnaMb2mNn9rdHfOpVwL/p 38ih5Wqim+zi+25JjKahTCMzVh94azEsrRfXaE4OHB2D7iNWHREhUV4FHzwTS0OFAIQ1 WoH0uB9kAgpK1iI0z/7jSQYOxsRgNYqLPPRINE2jmy2D0VcHu5066QQRRMt15oQ3GXsM XxYHUK8jDKj4Secy37II4Ddnop4pCqsx/yyuhCm7+BBlcDMgoHC0RnfIlF6kPcOM/0qA CunQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=wMErbeqtKsputYktuwhpnqIlvsBeG5wHQjf/d7U9x1w=; b=XWeEzAWIplg1IfY5SB9etths52PYcLG8lPwaGwsrsAtIZ5DA8RJxaLX4wl48UxRyOm fMHItgVkk/wPQXU78y5eWR2KK6awcBSy+G1bcPL3p+IdtMfpmPTEicVkjDtT+KjMdDSv A6soCo2KQreXIbeQzHDxQWQPIXzR+JivaKoshboCD/1C2eRFOFvDRoZl15u5LhSpS18z LmdVFOLbdcD19SHJWmir8DQnaEn8YftnHA8Bygq1TvGcvz2YdDFUTSyPIWIpA84Um2vy BauoYXmA17sKfqMYaNBdxBQC/1wkhHjjcdCdh+MYWHELvQymDtbTPsf2vWHl805yGX5I IbFA== X-Gm-Message-State: AHQUAuafJ6YRhozVj0vVU3B+ioWJXS8YGPZ4JUqEZsEZy+F+neD/cTBD Y/VwzB9TyqZXhOZAb1lIkC5sx/cY X-Google-Smtp-Source: AHgI3IYtNKW8XauZvNnepBqAcryltUImZh5Y49Dsxi3zJx2RQbYGlUbfk9CMo4b3zNHAUwsSCb0pVw== X-Received: by 2002:a62:7086:: with SMTP id l128mr19936239pfc.68.1550423599332; Sun, 17 Feb 2019 09:13:19 -0800 (PST) Received: from [192.168.1.3] (ip68-228-73-187.oc.oc.cox.net. [68.228.73.187]) by smtp.gmail.com with ESMTPSA id t3sm15163638pga.31.2019.02.17.09.13.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 17 Feb 2019 09:13:18 -0800 (PST) Subject: Re: [BUG] [FIX] net: dsa: oops in br_vlan_enabled To: Frank Wunderlich , netdev@vger.kernel.org, Andrew Lunn , Vivien Didelot References: From: Florian Fainelli Openpgp: preference=signencrypt Autocrypt: addr=f.fainelli@gmail.com; keydata= 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 w0j9Sw== Message-ID: <62c1c008-8484-3e6c-239a-906efb55a6d0@gmail.com> Date: Sun, 17 Feb 2019 09:13:08 -0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Hi Frank, On 2/16/2019 8:22 AM, Frank Wunderlich wrote: > Hi, > > i've found an oops in 4.19.23/10, seems to be fixed anyhow in 5.0 (also works in 4.14.101) > > root@bpi-r2:~# ip link add link lan0 name lan0.5 type vlan id 5 > root@bpi-r2:~# ip addr add 192.168.5.200/24 brd 192.168.5.255 dev lan0.5 > root@bpi-r2:~# ip link set dev lan0 up > root@bpi-r2:~# ip link set dev lan0.5 up So that these steps don't involve a bridge, and because we don't (yet) implment ndo_vlan_rx_{add,kill}_vid() netdevice_ops, there is no VLAN programming, it's all software > > 12: lan0.5@lan0: mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000 > link/ether 02:02:02:02:02:02 brd ff:ff:ff:ff:ff:ff > inet 192.168.5.200/24 brd 192.168.5.255 scope global lan0.5 > valid_lft forever preferred_lft forever > > root@bpi-r2:~# brctl addbr bridge_name > root@bpi-r2:~# brctl addif bridge_name lan0.5 Unless you changed the bridge to have VLAN filtering/awareness with: echo 1 > /sys/class/net/bridge_name/bridge/vlan_filtering There will be no VLAN configuration/objects pushed to DSA since commit 2ea7a679ca2abd251c1ec03f20508619707e1749 ("net: dsa: Don't add vlans when vlan filtering is disabled") so I am not sure how you got into that situation because prior to pushing a VLAN object, the port must be part of a bridge, so the steps typically look like: - port_bridge_join which assigns dp->bridge_dev - port_vlan_add Does your 4.19.23 kernel somehow change how VLAN objects are pushed down the switch driver? > [ 352.057128] bridge_name: port 1(lan0.5) entered blocking state > [ 352.063065] bridge_name: port 1(lan0.5) entered disabled state > [ 352.069181] device lan0.5 entered promiscuous mode > [ 352.074018] device lan0 entered promiscuous mode > [ 352.078906] Unable to handle kernel NULL pointer dereference at virtual address 00000558 > ... > [ 352.493085] [] (br_vlan_enabled [bridge]) from [] (dsa_port_vlan_add+0x60/0xbc [dsa_core]) > [ 352.503050] [] (dsa_port_vlan_add [dsa_core]) from [] (dsa_slave_port_obj_add+0x4c/0x50 [dsa_core]) > [ 352.513776] [] (dsa_slave_port_obj_add [dsa_core]) from [] (__switchdev_port_obj_add+0x50/0xc4) > [ 352.524138] [] (__switchdev_port_obj_add) from [] (__switchdev_port_obj_add+0xa0/0xc4) > [ 352.533721] [] (__switchdev_port_obj_add) from [] (switchdev_port_obj_add_now+0x60/0x130) > [ 352.543562] [] (switchdev_port_obj_add_now) from [] (switchdev_port_obj_add+0x44/0x190) > [ 352.553284] [] (switchdev_port_obj_add) from [] (br_switchdev_port_vlan_add+0x60/0x7c [bridge]) > [ 352.563733] [] (br_switchdev_port_vlan_add [bridge]) from [] (__vlan_add+0xb0/0x620 [bridge]) > [ 352.574007] [] (__vlan_add [bridge]) from [] (nbp_vlan_add+0xc4/0x150 [bridge]) > [ 352.583073] [] (nbp_vlan_add [bridge]) from [] (nbp_vlan_init+0x134/0x164 [bridge]) > [ 352.592482] [] (nbp_vlan_init [bridge]) from [] (br_add_if+0x40c/0x5fc [bridge]) > [ 352.601632] [] (br_add_if [bridge]) from [] (add_del_if+0x6c/0x80 [bridge]) > [ 352.610351] [] (add_del_if [bridge]) from [] (br_dev_ioctl+0x7c/0x9c [bridge]) > [ 352.619290] [] (br_dev_ioctl [bridge]) from [] (dev_ifsioc+0x184/0x324) > [ 352.627582] [] (dev_ifsioc) from [] (dev_ioctl+0x32c/0x5cc) > [ 352.634837] [] (dev_ioctl) from [] (sock_ioctl+0x3bc/0x580) > > > since my 4.19.23 kernel is modified a bit i tried with 4.19.10 without my net modifications and it is still reproducable with steps above (create a vlan on dsa-user-port and then use it in a bridge) > > i fixed it with these changes: > > diff --git a/net/dsa/port.c b/net/dsa/port.c > index ed0595459df1..962887752ae8 100644 > --- a/net/dsa/port.c > +++ b/net/dsa/port.c > @@ -255,8 +255,9 @@ 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)) > - return dsa_port_notify(dp, DSA_NOTIFIER_VLAN_ADD, &info); > + printk(KERN_ALERT "DEBUG: Passed %s %d 0x%x \n",__FUNCTION__,__LINE__,(unsigned int)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; > } > @@ -273,7 +274,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; > > i've found in a Patch from florian/vivien: https://www.mail-archive.com/netdev@vger.kernel.org/msg281415.html > > Strange that 5.0-rc1 does not crash,because these 2 code-sections are unchanged: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/dsa/port.c#n255 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/bridge/br_vlan.c#n788 > > maybe you know why only 4.19 is affected... > > regards Frank > -- Florian