All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Kubiak <michal.kubiak@intel.com>
To: Nikolay Aleksandrov <razor@blackwall.org>
Cc: <netdev@vger.kernel.org>, <monis@voltaire.com>,
	<syoshida@redhat.com>, <j.vosburgh@gmail.com>,
	<andy@greyhouse.net>, <kuba@kernel.org>, <davem@davemloft.net>,
	<pabeni@redhat.com>, <edumazet@google.com>,
	<syzbot+9dfc3f3348729cc82277@syzkaller.appspotmail.com>
Subject: Re: [PATCH net v2 3/4] bonding: restore bond's IFF_SLAVE flag if a non-eth dev enslave fails
Date: Tue, 14 Mar 2023 16:07:15 +0100	[thread overview]
Message-ID: <ZBCNozKDnFQGwR4A@localhost.localdomain> (raw)
In-Reply-To: <20230314111426.1254998-4-razor@blackwall.org>

On Tue, Mar 14, 2023 at 01:14:25PM +0200, Nikolay Aleksandrov wrote:
> syzbot reported a warning[1] where the bond device itself is a slave and
> we try to enslave a non-ethernet device as the first slave which fails
> but then in the error path when ether_setup() restores the bond device
> it also clears all flags. In my previous fix[2] I restored the
> IFF_MASTER flag, but I didn't consider the case that the bond device
> itself might also be a slave with IFF_SLAVE set, so we need to restore
> that flag as well. Use the new bond_ether_setup helper which does the
> right thing and restores the bond's flags properly.
> 
> Steps to reproduce using a nlmon dev:
>  $ ip l add nlmon0 type nlmon
>  $ ip l add bond1 type bond
>  $ ip l add bond2 type bond
>  $ ip l set bond1 master bond2
>  $ ip l set dev nlmon0 master bond1
>  $ ip -d l sh dev bond1
>  22: bond1: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noqueue master bond2 state DOWN mode DEFAULT group default qlen 1000
>  (now bond1's IFF_SLAVE flag is gone and we'll hit a warning[3] if we
>   try to delete it)
> 
> [1] https://syzkaller.appspot.com/bug?id=391c7b1f6522182899efba27d891f1743e8eb3ef
> [2] commit 7d5cd2ce5292 ("bonding: correctly handle bonding type change on enslave failure")
> [3] example warning:
>  [   27.008664] bond1: (slave nlmon0): The slave device specified does not support setting the MAC address
>  [   27.008692] bond1: (slave nlmon0): Error -95 calling set_mac_address
>  [   32.464639] bond1 (unregistering): Released all slaves
>  [   32.464685] ------------[ cut here ]------------
>  [   32.464686] WARNING: CPU: 1 PID: 2004 at net/core/dev.c:10829 unregister_netdevice_many+0x72a/0x780
>  [   32.464694] Modules linked in: br_netfilter bridge bonding virtio_net
>  [   32.464699] CPU: 1 PID: 2004 Comm: ip Kdump: loaded Not tainted 5.18.0-rc3+ #47
>  [   32.464703] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.1-2.fc37 04/01/2014
>  [   32.464704] RIP: 0010:unregister_netdevice_many+0x72a/0x780
>  [   32.464707] Code: 99 fd ff ff ba 90 1a 00 00 48 c7 c6 f4 02 66 96 48 c7 c7 20 4d 35 96 c6 05 fa c7 2b 02 01 e8 be 6f 4a 00 0f 0b e9 73 fd ff ff <0f> 0b e9 5f fd ff ff 80 3d e3 c7 2b 02 00 0f 85 3b fd ff ff ba 59
>  [   32.464710] RSP: 0018:ffffa006422d7820 EFLAGS: 00010206
>  [   32.464712] RAX: ffff8f6e077140a0 RBX: ffffa006422d7888 RCX: 0000000000000000
>  [   32.464714] RDX: ffff8f6e12edbe58 RSI: 0000000000000296 RDI: ffffffff96d4a520
>  [   32.464716] RBP: ffff8f6e07714000 R08: ffffffff96d63600 R09: ffffa006422d7728
>  [   32.464717] R10: 0000000000000ec0 R11: ffffffff9698c988 R12: ffff8f6e12edb140
>  [   32.464719] R13: dead000000000122 R14: dead000000000100 R15: ffff8f6e12edb140
>  [   32.464723] FS:  00007f297c2f1740(0000) GS:ffff8f6e5d900000(0000) knlGS:0000000000000000
>  [   32.464725] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>  [   32.464726] CR2: 00007f297bf1c800 CR3: 00000000115e8000 CR4: 0000000000350ee0
>  [   32.464730] Call Trace:
>  [   32.464763]  <TASK>
>  [   32.464767]  rtnl_dellink+0x13e/0x380
>  [   32.464776]  ? cred_has_capability.isra.0+0x68/0x100
>  [   32.464780]  ? __rtnl_unlock+0x33/0x60
>  [   32.464783]  ? bpf_lsm_capset+0x10/0x10
>  [   32.464786]  ? security_capable+0x36/0x50
>  [   32.464790]  rtnetlink_rcv_msg+0x14e/0x3b0
>  [   32.464792]  ? _copy_to_iter+0xb1/0x790
>  [   32.464796]  ? post_alloc_hook+0xa0/0x160
>  [   32.464799]  ? rtnl_calcit.isra.0+0x110/0x110
>  [   32.464802]  netlink_rcv_skb+0x50/0xf0
>  [   32.464806]  netlink_unicast+0x216/0x340
>  [   32.464809]  netlink_sendmsg+0x23f/0x480
>  [   32.464812]  sock_sendmsg+0x5e/0x60
>  [   32.464815]  ____sys_sendmsg+0x22c/0x270
>  [   32.464818]  ? import_iovec+0x17/0x20
>  [   32.464821]  ? sendmsg_copy_msghdr+0x59/0x90
>  [   32.464823]  ? do_set_pte+0xa0/0xe0
>  [   32.464828]  ___sys_sendmsg+0x81/0xc0
>  [   32.464832]  ? mod_objcg_state+0xc6/0x300
>  [   32.464835]  ? refill_obj_stock+0xa9/0x160
>  [   32.464838]  ? memcg_slab_free_hook+0x1a5/0x1f0
>  [   32.464842]  __sys_sendmsg+0x49/0x80
>  [   32.464847]  do_syscall_64+0x3b/0x90
>  [   32.464851]  entry_SYSCALL_64_after_hwframe+0x44/0xae
>  [   32.464865] RIP: 0033:0x7f297bf2e5e7
>  [   32.464868] Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
>  [   32.464869] RSP: 002b:00007ffd96c824c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
>  [   32.464872] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f297bf2e5e7
>  [   32.464874] RDX: 0000000000000000 RSI: 00007ffd96c82540 RDI: 0000000000000003
>  [   32.464875] RBP: 00000000640f19de R08: 0000000000000001 R09: 000000000000007c
>  [   32.464876] R10: 00007f297bffabe0 R11: 0000000000000246 R12: 0000000000000001
>  [   32.464877] R13: 00007ffd96c82d20 R14: 00007ffd96c82610 R15: 000055bfe38a7020
>  [   32.464881]  </TASK>
>  [   32.464882] ---[ end trace 0000000000000000 ]---
> 
> Fixes: 7d5cd2ce5292 ("bonding: correctly handle bonding type change on enslave failure")
> Reported-by: syzbot+9dfc3f3348729cc82277@syzkaller.appspotmail.com
> Link: https://syzkaller.appspot.com/bug?id=391c7b1f6522182899efba27d891f1743e8eb3ef
> Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>

Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>


  reply	other threads:[~2023-03-14 15:07 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-14 11:14 [PATCH net v2 0/4] bonding: properly restore flags when bond changes ether type Nikolay Aleksandrov
2023-03-14 11:14 ` [PATCH net v2 1/4] bonding: add bond_ether_setup helper Nikolay Aleksandrov
2023-03-14 14:58   ` Michal Kubiak
2023-03-14 15:08     ` Nikolay Aleksandrov
2023-03-14 15:12       ` Nikolay Aleksandrov
2023-03-14 15:34   ` Jay Vosburgh
2023-03-14 15:37     ` Nikolay Aleksandrov
2023-03-15  7:55   ` Jakub Kicinski
2023-03-15  8:21     ` Nikolay Aleksandrov
2023-03-14 11:14 ` [PATCH net v2 2/4] bonding: restore IFF_MASTER/SLAVE flags on bond enslave ether type change Nikolay Aleksandrov
2023-03-14 15:09   ` Michal Kubiak
2023-03-14 15:13     ` Nikolay Aleksandrov
2023-03-14 11:14 ` [PATCH net v2 3/4] bonding: restore bond's IFF_SLAVE flag if a non-eth dev enslave fails Nikolay Aleksandrov
2023-03-14 15:07   ` Michal Kubiak [this message]
2023-03-14 11:14 ` [PATCH net v2 4/4] selftests: bonding: add tests for ether type changes Nikolay Aleksandrov
2023-03-14 15:04   ` Michal Kubiak
2023-03-14 15:15 ` [PATCH net v2 0/4] bonding: properly restore flags when bond changes ether type Jonathan Toppins
2023-03-14 16:20 ` Jay Vosburgh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZBCNozKDnFQGwR4A@localhost.localdomain \
    --to=michal.kubiak@intel.com \
    --cc=andy@greyhouse.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=j.vosburgh@gmail.com \
    --cc=kuba@kernel.org \
    --cc=monis@voltaire.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=razor@blackwall.org \
    --cc=syoshida@redhat.com \
    --cc=syzbot+9dfc3f3348729cc82277@syzkaller.appspotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.