Revision c80ed84e76886487703bf04b38ce10e92e2d6e26 authored by Vladimir Oltean on 16 November 2019, 16:08:25 UTC, committed by David S. Miller on 16 November 2019, 20:23:53 UTC
This sequence of operations: ip link set dev br0 type bridge vlan_filtering 1 bridge vlan del dev swp2 vid 1 ip link set dev br0 type bridge vlan_filtering 1 ip link set dev br0 type bridge vlan_filtering 0 apparently fails with the message: [ 31.305716] sja1105 spi0.1: Reset switch and programmed static config. Reason: VLAN filtering [ 31.322161] sja1105 spi0.1: Couldn't determine PVID attributes (pvid 0) [ 31.328939] sja1105 spi0.1: Failed to setup VLAN tagging for port 1: -2 [ 31.335599] ------------[ cut here ]------------ [ 31.340215] WARNING: CPU: 1 PID: 194 at net/switchdev/switchdev.c:157 switchdev_port_attr_set_now+0x9c/0xa4 [ 31.349981] br0: Commit of attribute (id=6) failed. [ 31.354890] Modules linked in: [ 31.357942] CPU: 1 PID: 194 Comm: ip Not tainted 5.4.0-rc6-01792-gf4f632e07665-dirty #2062 [ 31.366167] Hardware name: Freescale LS1021A [ 31.370437] [<c03144dc>] (unwind_backtrace) from [<c030e184>] (show_stack+0x10/0x14) [ 31.378153] [<c030e184>] (show_stack) from [<c11d1c1c>] (dump_stack+0xe0/0x10c) [ 31.385437] [<c11d1c1c>] (dump_stack) from [<c034c730>] (__warn+0xf4/0x10c) [ 31.392373] [<c034c730>] (__warn) from [<c034c7bc>] (warn_slowpath_fmt+0x74/0xb8) [ 31.399827] [<c034c7bc>] (warn_slowpath_fmt) from [<c11ca204>] (switchdev_port_attr_set_now+0x9c/0xa4) [ 31.409097] [<c11ca204>] (switchdev_port_attr_set_now) from [<c117036c>] (__br_vlan_filter_toggle+0x6c/0x118) [ 31.418971] [<c117036c>] (__br_vlan_filter_toggle) from [<c115d010>] (br_changelink+0xf8/0x518) [ 31.427637] [<c115d010>] (br_changelink) from [<c0f8e9ec>] (__rtnl_newlink+0x3f4/0x76c) [ 31.435613] [<c0f8e9ec>] (__rtnl_newlink) from [<c0f8eda8>] (rtnl_newlink+0x44/0x60) [ 31.443329] [<c0f8eda8>] (rtnl_newlink) from [<c0f89f20>] (rtnetlink_rcv_msg+0x2cc/0x51c) [ 31.451477] [<c0f89f20>] (rtnetlink_rcv_msg) from [<c1008df8>] (netlink_rcv_skb+0xb8/0x110) [ 31.459796] [<c1008df8>] (netlink_rcv_skb) from [<c1008648>] (netlink_unicast+0x17c/0x1f8) [ 31.468026] [<c1008648>] (netlink_unicast) from [<c1008980>] (netlink_sendmsg+0x2bc/0x3b4) [ 31.476261] [<c1008980>] (netlink_sendmsg) from [<c0f43858>] (___sys_sendmsg+0x230/0x250) [ 31.484408] [<c0f43858>] (___sys_sendmsg) from [<c0f44c84>] (__sys_sendmsg+0x50/0x8c) [ 31.492209] [<c0f44c84>] (__sys_sendmsg) from [<c0301000>] (ret_fast_syscall+0x0/0x28) [ 31.500090] Exception stack(0xedf47fa8 to 0xedf47ff0) [ 31.505122] 7fa0: 00000002 b6f2e060 00000003 beabd6a4 00000000 00000000 [ 31.513265] 7fc0: 00000002 b6f2e060 5d6e3213 00000128 00000000 00000001 00000006 000619c4 [ 31.521405] 7fe0: 00086078 beabd658 0005edbc b6e7ce68 The reason is the implementation of br_get_pvid: static inline u16 br_get_pvid(const struct net_bridge_vlan_group *vg) { if (!vg) return 0; smp_rmb(); return vg->pvid; } Since VID 0 is an invalid pvid from the bridge's point of view, let's add this check in dsa_8021q_restore_pvid to avoid restoring a pvid that doesn't really exist. Fixes: 5f33183b7fdf ("net: dsa: tag_8021q: Restore bridge VLANs when enabling vlan_filtering") Signed-off-by: Vladimir Oltean <olteanv@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent e84fa0a
File | Mode | Size |
---|---|---|
kasan | ||
Kconfig | -rw-r--r-- | 24.2 KB |
Kconfig.debug | -rw-r--r-- | 4.7 KB |
Makefile | -rw-r--r-- | 3.8 KB |
backing-dev.c | -rw-r--r-- | 28.4 KB |
balloon_compaction.c | -rw-r--r-- | 8.2 KB |
cleancache.c | -rw-r--r-- | 9.8 KB |
cma.c | -rw-r--r-- | 14.3 KB |
cma.h | -rw-r--r-- | 573 bytes |
cma_debug.c | -rw-r--r-- | 4.5 KB |
compaction.c | -rw-r--r-- | 74.8 KB |
debug.c | -rw-r--r-- | 5.9 KB |
debug_page_ref.c | -rw-r--r-- | 1.4 KB |
dmapool.c | -rw-r--r-- | 13.8 KB |
early_ioremap.c | -rw-r--r-- | 6.8 KB |
fadvise.c | -rw-r--r-- | 5.4 KB |
failslab.c | -rw-r--r-- | 1.4 KB |
filemap.c | -rw-r--r-- | 96.3 KB |
frame_vector.c | -rw-r--r-- | 6.5 KB |
frontswap.c | -rw-r--r-- | 14.2 KB |
gup.c | -rw-r--r-- | 65.8 KB |
gup_benchmark.c | -rw-r--r-- | 2.7 KB |
highmem.c | -rw-r--r-- | 11.7 KB |
hmm.c | -rw-r--r-- | 29.3 KB |
huge_memory.c | -rw-r--r-- | 84.9 KB |
hugetlb.c | -rw-r--r-- | 138.3 KB |
hugetlb_cgroup.c | -rw-r--r-- | 10.9 KB |
hwpoison-inject.c | -rw-r--r-- | 2.8 KB |
init-mm.c | -rw-r--r-- | 1.2 KB |
internal.h | -rw-r--r-- | 17.1 KB |
interval_tree.c | -rw-r--r-- | 3.1 KB |
khugepaged.c | -rw-r--r-- | 54.5 KB |
kmemleak-test.c | -rw-r--r-- | 2.6 KB |
kmemleak.c | -rw-r--r-- | 56.0 KB |
ksm.c | -rw-r--r-- | 89.1 KB |
list_lru.c | -rw-r--r-- | 14.6 KB |
maccess.c | -rw-r--r-- | 6.0 KB |
madvise.c | -rw-r--r-- | 28.7 KB |
memblock.c | -rw-r--r-- | 56.6 KB |
memcontrol.c | -rw-r--r-- | 188.7 KB |
memfd.c | -rw-r--r-- | 7.9 KB |
memory-failure.c | -rw-r--r-- | 52.1 KB |
memory.c | -rw-r--r-- | 125.6 KB |
memory_hotplug.c | -rw-r--r-- | 46.5 KB |
mempolicy.c | -rw-r--r-- | 74.2 KB |
mempool.c | -rw-r--r-- | 15.8 KB |
memremap.c | -rw-r--r-- | 12.2 KB |
memtest.c | -rw-r--r-- | 2.8 KB |
migrate.c | -rw-r--r-- | 76.2 KB |
mincore.c | -rw-r--r-- | 7.5 KB |
mlock.c | -rw-r--r-- | 22.7 KB |
mm_init.c | -rw-r--r-- | 4.8 KB |
mmap.c | -rw-r--r-- | 100.5 KB |
mmu_context.c | -rw-r--r-- | 1.3 KB |
mmu_gather.c | -rw-r--r-- | 6.7 KB |
mmu_notifier.c | -rw-r--r-- | 15.8 KB |
mmzone.c | -rw-r--r-- | 2.4 KB |
mprotect.c | -rw-r--r-- | 15.5 KB |
mremap.c | -rw-r--r-- | 19.4 KB |
msync.c | -rw-r--r-- | 2.7 KB |
nommu.c | -rw-r--r-- | 45.4 KB |
oom_kill.c | -rw-r--r-- | 30.1 KB |
page-writeback.c | -rw-r--r-- | 84.7 KB |
page_alloc.c | -rw-r--r-- | 237.9 KB |
page_counter.c | -rw-r--r-- | 6.6 KB |
page_ext.c | -rw-r--r-- | 10.9 KB |
page_idle.c | -rw-r--r-- | 5.5 KB |
page_io.c | -rw-r--r-- | 10.5 KB |
page_isolation.c | -rw-r--r-- | 9.2 KB |
page_owner.c | -rw-r--r-- | 16.0 KB |
page_poison.c | -rw-r--r-- | 3.0 KB |
page_vma_mapped.c | -rw-r--r-- | 7.6 KB |
pagewalk.c | -rw-r--r-- | 9.2 KB |
percpu-internal.h | -rw-r--r-- | 6.3 KB |
percpu-km.c | -rw-r--r-- | 3.0 KB |
percpu-stats.c | -rw-r--r-- | 5.7 KB |
percpu-vm.c | -rw-r--r-- | 10.3 KB |
percpu.c | -rw-r--r-- | 92.3 KB |
pgtable-generic.c | -rw-r--r-- | 5.3 KB |
process_vm_access.c | -rw-r--r-- | 9.8 KB |
readahead.c | -rw-r--r-- | 16.5 KB |
rmap.c | -rw-r--r-- | 54.0 KB |
rodata_test.c | -rw-r--r-- | 1.3 KB |
shmem.c | -rw-r--r-- | 107.5 KB |
shuffle.c | -rw-r--r-- | 5.7 KB |
shuffle.h | -rw-r--r-- | 1.5 KB |
slab.c | -rw-r--r-- | 105.4 KB |
slab.h | -rw-r--r-- | 19.2 KB |
slab_common.c | -rw-r--r-- | 44.1 KB |
slob.c | -rw-r--r-- | 18.0 KB |
slub.c | -rw-r--r-- | 144.0 KB |
sparse-vmemmap.c | -rw-r--r-- | 6.9 KB |
sparse.c | -rw-r--r-- | 25.2 KB |
swap.c | -rw-r--r-- | 29.9 KB |
swap_cgroup.c | -rw-r--r-- | 5.2 KB |
swap_slots.c | -rw-r--r-- | 9.4 KB |
swap_state.c | -rw-r--r-- | 22.4 KB |
swapfile.c | -rw-r--r-- | 94.8 KB |
truncate.c | -rw-r--r-- | 26.7 KB |
usercopy.c | -rw-r--r-- | 9.5 KB |
userfaultfd.c | -rw-r--r-- | 15.8 KB |
util.c | -rw-r--r-- | 22.0 KB |
vmacache.c | -rw-r--r-- | 2.7 KB |
vmalloc.c | -rw-r--r-- | 89.4 KB |
vmpressure.c | -rw-r--r-- | 13.9 KB |
vmscan.c | -rw-r--r-- | 125.2 KB |
vmstat.c | -rw-r--r-- | 52.1 KB |
workingset.c | -rw-r--r-- | 19.1 KB |
z3fold.c | -rw-r--r-- | 40.7 KB |
zbud.c | -rw-r--r-- | 18.2 KB |
zpool.c | -rw-r--r-- | 11.2 KB |
zsmalloc.c | -rw-r--r-- | 61.9 KB |
zswap.c | -rw-r--r-- | 34.2 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...