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=-6.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,SIGNED_OFF_BY, SPF_PASS 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 34A03C43381 for ; Sun, 17 Feb 2019 23:21:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D885A20C01 for ; Sun, 17 Feb 2019 23:21:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ny8n81kq" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727027AbfBQXU7 (ORCPT ); Sun, 17 Feb 2019 18:20:59 -0500 Received: from mail-pf1-f196.google.com ([209.85.210.196]:38717 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726283AbfBQXU7 (ORCPT ); Sun, 17 Feb 2019 18:20:59 -0500 Received: by mail-pf1-f196.google.com with SMTP id n125so279687pfn.5 for ; Sun, 17 Feb 2019 15:20:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:references:openpgp:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=hUXvxL153CGbv7QMTRqhOocxP/H9NwvJtm3vblS0F2A=; b=Ny8n81kq+EzgAcpCPARJOVpQ5e14Rgrwm1tLKOIvc1HI8hIOkRNOAcHysVtTPZU2EW +mTq3QBJgg+5gSPLvkJT6sLLn+dmSzrsvb/3z3lpgH1ept8yhXuTN0+OuareUVHgJJT+ PTv2cprgqEnOsWX1ebBcXiRPEXSeUFTLHnrtTwENPDRs1crfcJ9NhRgwUOFEa9xPA8vi kX1yocZH55lpbnxsGDVAahuDKL95YkO99EH470FKqAuGa3sEvK/p5zKQDpqiS9NpHG69 LYEbYBFr8GabjYp8BECXPN+GlKxQ9NyMn4ZmImSfLaeao5fbB++y0IPv7E3OiT2EdUCp WWuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:references:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language; bh=hUXvxL153CGbv7QMTRqhOocxP/H9NwvJtm3vblS0F2A=; b=FhaYNUdse4xt6nDCNXSSHY831TU9OVUW55WvgYk+Ht67vU2V5B9IMp+xuRfar1wkps J035RUwomPRCVvx/pR0sojtuznTaPw4HYfdPJs0pQVqwo8osTtXbPOcsBSq4rXnXqvp+ ZAzIP0pmJx4OrnQg06qMUmnoEOpPDrGhCO6jg/O2PmdAVeWOTptk1tnJtxd/Dy8xBcyu 95AUuaVd0lACQ+g0uMGCfI7n9TruUaPgjeFT73goMiRpNTIvj7J8Gchn6igWSyO1m/Xl DBF/5KQ2lKBQBoTIyfCYtQi2bsTbI8KI0UXDdSzMy3Zfwa0eTqSqok/zRUD6lpU7V4HO wL4Q== X-Gm-Message-State: AHQUAuZE5c1ECd4ht+OTYeMX24WHqLr1T2hRcH6BLYwxZhZPvzXrbxg9 pSS3vkYUhsq4nw4GnOZBEl0= X-Google-Smtp-Source: AHgI3Ib7nrYMDXJCYaXWALE1CsRK+BXEypefZjS/zAq+UfbDeE3T31C5H96Xzu/kPrxSz6RptqqsAg== X-Received: by 2002:a63:2bc6:: with SMTP id r189mr15752941pgr.201.1550445658119; Sun, 17 Feb 2019 15:20:58 -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 n75sm20663734pfb.39.2019.02.17.15.20.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 17 Feb 2019 15:20:57 -0800 (PST) Subject: Re: [BUG] [FIX] net: dsa: oops in br_vlan_enabled From: Florian Fainelli To: Frank Wunderlich , netdev@vger.kernel.org, Andrew Lunn , Vivien Didelot References: <62c1c008-8484-3e6c-239a-906efb55a6d0@gmail.com> Openpgp: preference=signencrypt Autocrypt: addr=f.fainelli@gmail.com; keydata= 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 w0j9Sw== Message-ID: <2b9ecca4-4a92-44e0-f85e-2877dd08013a@gmail.com> Date: Sun, 17 Feb 2019 15:20:48 -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: <62c1c008-8484-3e6c-239a-906efb55a6d0@gmail.com> Content-Type: multipart/mixed; boundary="------------C70353A999E2F2319D418525" Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This is a multi-part message in MIME format. --------------C70353A999E2F2319D418525 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit On 2/17/2019 9:13 AM, Florian Fainelli wrote: > 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: Your fix is undoing the commit from Andrew I just referenced, so it is definitively not the right fix because it will push VLAN objects down to a non-VLAN aware bridge, not that this is really a problem, but it should not be happening anyway. The problem appears to be the following though: you are enslaving a VLAN device, which does not have switchdev_ops, so we recurse into the lower device, which is the DSA network device, which does have switchdev_ops defined. Once we are there we check the orig_dev against being a bridge master network device, but we are not checking that it's a VLAN device so we end-up assuming it is a DSA network device, we de-reference garbage by checking br_vlan_enabled(dp->bridge_dev) because there is simply no such data structure associated with the VLAN device. The attached patch should help. This is no longer a problem in newer kernels because the switchdev operations use a notifier which checks the target network device to be DSA. -- Florian --------------C70353A999E2F2319D418525 Content-Type: text/plain; charset=UTF-8; name="0001-net-dsa-Prevent-oops-while-enslaving-non-DSA-devices.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-net-dsa-Prevent-oops-while-enslaving-non-DSA-devices.pa"; filename*1="tch" RnJvbSBjMGM2MGExZDFkYzQ1MWE1MTEzNjg2N2I1MWRmNmE0ZWMzNGUzMzZiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5lbGxpQGdt YWlsLmNvbT4KRGF0ZTogU3VuLCAxNyBGZWIgMjAxOSAxNToxNjoyMiAtMDgwMApTdWJqZWN0 OiBbUEFUQ0hdIG5ldDogZHNhOiBQcmV2ZW50IG9vcHMgd2hpbGUgZW5zbGF2aW5nIG5vbi1E U0EgZGV2aWNlcwoKRFNBIGN1cnJlbnRseSBkb2VzIG5vdCBjaGVjayB0aGF0IHRoZSB0YXJn ZXQgbmV0d29yayBkZXZpY2Ugb2YgYSBzd2l0Y2hkZXYgb3BlcmF0aW9uIGlzIGFjdHVhbGx5 IGEgRFNBIHNsYXZlIG5ldHdvcmsgZGV2aWNlCgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIEZh aW5lbGxpIDxmLmZhaW5lbGxpQGdtYWlsLmNvbT4KLS0tCiBuZXQvZHNhL3NsYXZlLmMgfCAz NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MjggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvZHNh L3NsYXZlLmMgYi9uZXQvZHNhL3NsYXZlLmMKaW5kZXggMWM0NWMxZDZkMjQxLi4zY2VlZjI5 OWIwMzAgMTAwNjQ0Ci0tLSBhL25ldC9kc2Evc2xhdmUuYworKysgYi9uZXQvZHNhL3NsYXZl LmMKQEAgLTI3OCw5ICsyNzgsMTQgQEAgc3RhdGljIGludCBkc2Ffc2xhdmVfcG9ydF9hdHRy X3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBzd2l0 Y2hkZXZfYXR0ciAqYXR0ciwKIAkJCQkgICBzdHJ1Y3Qgc3dpdGNoZGV2X3RyYW5zICp0cmFu cykKIHsKLQlzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3NsYXZlX3RvX3BvcnQoZGV2KTsK KwlzdHJ1Y3QgZHNhX3BvcnQgKmRwOwogCWludCByZXQ7CiAKKwlpZiAoIWRzYV9zbGF2ZV9k ZXZfY2hlY2soZGV2KSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJZHAgPSBkc2Ffc2xh dmVfdG9fcG9ydChkZXYpOworCiAJc3dpdGNoIChhdHRyLT5pZCkgewogCWNhc2UgU1dJVENI REVWX0FUVFJfSURfUE9SVF9TVFBfU1RBVEU6CiAJCXJldCA9IGRzYV9wb3J0X3NldF9zdGF0 ZShkcCwgYXR0ci0+dS5zdHBfc3RhdGUsIHRyYW5zKTsKQEAgLTMwNCw5ICszMDksMTQgQEAg c3RhdGljIGludCBkc2Ffc2xhdmVfcG9ydF9vYmpfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsCiAJCQkJICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29iaiAqb2JqLAogCQkJCSAgc3Ry dWN0IHN3aXRjaGRldl90cmFucyAqdHJhbnMpCiB7Ci0Jc3RydWN0IGRzYV9wb3J0ICpkcCA9 IGRzYV9zbGF2ZV90b19wb3J0KGRldik7CisJc3RydWN0IGRzYV9wb3J0ICpkcDsKIAlpbnQg ZXJyOwogCisJaWYgKCFkc2Ffc2xhdmVfZGV2X2NoZWNrKGRldikpCisJCXJldHVybiAtRU9Q Tk9UU1VQUDsKKworCWRwID0gZHNhX3NsYXZlX3RvX3BvcnQoZGV2KTsKKwogCS8qIEZvciB0 aGUgcHJlcGFyZSBwaGFzZSwgZW5zdXJlIHRoZSBmdWxsIHNldCBvZiBjaGFuZ2VzIGlzIGZl YXNhYmxlIGluCiAJICogb25lIGdvIGluIG9yZGVyIHRvIHNpZ25hbCBhIGZhaWx1cmUgcHJv cGVybHkuIElmIGFuIG9wZXJhdGlvbiBpcyBub3QKIAkgKiBzdXBwb3J0ZWQsIHJldHVybiAt RU9QTk9UU1VQUC4KQEAgLTMzOCw5ICszNDgsMTQgQEAgc3RhdGljIGludCBkc2Ffc2xhdmVf cG9ydF9vYmpfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiBzdGF0aWMgaW50IGRzYV9z bGF2ZV9wb3J0X29ial9kZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgIGNvbnN0 IHN0cnVjdCBzd2l0Y2hkZXZfb2JqICpvYmopCiB7Ci0Jc3RydWN0IGRzYV9wb3J0ICpkcCA9 IGRzYV9zbGF2ZV90b19wb3J0KGRldik7CisJc3RydWN0IGRzYV9wb3J0ICpkcDsKIAlpbnQg ZXJyOwogCisJaWYgKCFkc2Ffc2xhdmVfZGV2X2NoZWNrKGRldikpCisJCXJldHVybiAtRU9Q Tk9UU1VQUDsKKworCWRwID0gZHNhX3NsYXZlX3RvX3BvcnQoZGV2KTsKKwogCXN3aXRjaCAo b2JqLT5pZCkgewogCWNhc2UgU1dJVENIREVWX09CSl9JRF9QT1JUX01EQjoKIAkJZXJyID0g ZHNhX3BvcnRfbWRiX2RlbChkcCwgU1dJVENIREVWX09CSl9QT1JUX01EQihvYmopKTsKQEAg LTM2NSw5ICszODAsMTYgQEAgc3RhdGljIGludCBkc2Ffc2xhdmVfcG9ydF9vYmpfZGVsKHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsCiBzdGF0aWMgaW50IGRzYV9zbGF2ZV9wb3J0X2F0dHJf Z2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJICAgc3RydWN0IHN3aXRjaGRldl9h dHRyICphdHRyKQogewotCXN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2Ffc2xhdmVfdG9fcG9y dChkZXYpOwotCXN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRwLT5kczsKLQlzdHJ1Y3QgZHNh X3N3aXRjaF90cmVlICpkc3QgPSBkcy0+ZHN0OworCXN0cnVjdCBkc2Ffc3dpdGNoX3RyZWUg KmRzdDsKKwlzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7CisJc3RydWN0IGRzYV9wb3J0ICpkcDsK KworCWlmICghZHNhX3NsYXZlX2Rldl9jaGVjayhkZXYpKQorCQlyZXR1cm4gLUVPUE5PVFNV UFA7CisKKwlkcCA9IGRzYV9zbGF2ZV90b19wb3J0KGRldik7CisJZHMgPSBkcC0+ZHM7CisJ ZHN0ID0gZHMtPmRzdDsKIAogCXN3aXRjaCAoYXR0ci0+aWQpIHsKIAljYXNlIFNXSVRDSERF Vl9BVFRSX0lEX1BPUlRfUEFSRU5UX0lEOgotLSAKMi4xNy4xCgo= --------------C70353A999E2F2319D418525--