From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Mark Salter <msalter@redhat.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Mark Langsdorf <mlangsdo@redhat.com>,
"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 4.2 01/30] phylib: fix device deletion order in mdiobus_unregister()
Date: Thu, 1 Oct 2015 11:21:23 +0200 [thread overview]
Message-ID: <20151001092038.273787003@linuxfoundation.org> (raw)
In-Reply-To: <20151001092038.213304276@linuxfoundation.org>
4.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mark Salter <msalter@redhat.com>
[ Upstream commit b6c6aedcbcbacd7b0cb4b64ed5ac835bc1c60a03 ]
commit 8b63ec1837fa ("phylib: Make PHYs children of their MDIO bus, not
the bus' parent.") uncovered a problem in mdiobus_unregister() which
leads to this warning when I reboot an APM Mustang (arm64) platform:
WARNING: CPU: 7 PID: 4239 at fs/sysfs/group.c:224 sysfs_remove_group+0xa0/0xa4()
sysfs group fffffe0000e07a10 not found for kobject 'xgene-mii-eth0:03'
...
CPU: 7 PID: 4239 Comm: reboot Tainted: G E 4.2.0-0.18.el7.test15.aarch64 #1
Hardware name: AppliedMicro Mustang/Mustang, BIOS 1.1.0 Aug 26 2015
Call Trace:
[<fffffe000009739c>] dump_backtrace+0x0/0x170
[<fffffe000009752c>] show_stack+0x20/0x2c
[<fffffe00007436f0>] dump_stack+0x78/0x9c
[<fffffe00000c2cb4>] warn_slowpath_common+0xa0/0xd8
[<fffffe00000c2d60>] warn_slowpath_fmt+0x74/0x88
[<fffffe0000293d3c>] sysfs_remove_group+0x9c/0xa4
[<fffffe00004a8bac>] dpm_sysfs_remove+0x5c/0x70
[<fffffe000049b388>] device_del+0x44/0x208
[<fffffe000049b578>] device_unregister+0x2c/0x7c
[<fffffe000050dc68>] mdiobus_unregister+0x48/0x94
[<fffffe000052afd0>] xgene_enet_mdio_remove+0x28/0x44
[<fffffe000052d3f0>] xgene_enet_remove+0xd0/0xd8
[<fffffe000052d424>] xgene_enet_shutdown+0x2c/0x3c
[<fffffe00004a204c>] platform_drv_shutdown+0x24/0x40
[<fffffe000049d4f4>] device_shutdown+0xf0/0x1b4
[<fffffe00000e31ec>] kernel_restart_prepare+0x40/0x4c
[<fffffe00000e32f8>] kernel_restart+0x1c/0x80
[<fffffe00000e3670>] SyS_reboot+0x17c/0x250
The problem is that mdiobus_unregister() deletes the bus device before
unregistering the phy devices on the bus. This wasn't a problem before
because the phys were not children of the bus:
/sys/devices/platform/APMC0D05:00/net/eth0/xgene-mii-eth0:03
/sys/devices/platform/APMC0D05:00/net/eth0/xgene-mii-eth0
But now that they are:
/sys/devices/platform/APMC0D05:00/net/eth0/xgene-mii-eth0/xgene-mii-eth0:03
when mdiobus_unregister deletes the bus device, the phy subdirs are
removed from sysfs also. So when the phys are unregistered afterward,
we get the warning. This patch changes the order so that phys are
unregistered before the bus device is deleted.
Fixes: 8b63ec1837fa ("phylib: Make PHYs children of their MDIO bus, not the bus' parent.")
Signed-off-by: Mark Salter <msalter@redhat.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/phy/mdio_bus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -303,12 +303,12 @@ void mdiobus_unregister(struct mii_bus *
BUG_ON(bus->state != MDIOBUS_REGISTERED);
bus->state = MDIOBUS_UNREGISTERED;
- device_del(&bus->dev);
for (i = 0; i < PHY_MAX_ADDR; i++) {
if (bus->phy_map[i])
device_unregister(&bus->phy_map[i]->dev);
bus->phy_map[i] = NULL;
}
+ device_del(&bus->dev);
}
EXPORT_SYMBOL(mdiobus_unregister);
next prev parent reply other threads:[~2015-10-01 9:21 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-01 9:21 [PATCH 4.2 00/30] 4.2.3-stable review Greg Kroah-Hartman
2015-10-01 9:21 ` Greg Kroah-Hartman [this message]
2015-10-01 9:21 ` [PATCH 4.2 02/30] sock, diag: fix panic in sock_diag_put_filterinfo Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 03/30] ipv6: fix exthdrs offload registration in out_rt path Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 04/30] net: fec: clear receive interrupts before processing a packet Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 05/30] net: eth: altera: fix napi poll_list corruption Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 06/30] net/ipv6: Correct PIM6 mrt_lock handling Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 07/30] net: dsa: bcm_sf2: Fix ageing conditions and operation Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 08/30] ipv6: fix multipath route replace error recovery Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 09/30] net: dsa: bcm_sf2: Fix 64-bits register writes Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 10/30] netlink, mmap: transform mmap skb into full skb on taps Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 11/30] sctp: fix race on protocol/netns initialization Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 13/30] net: mvneta: fix DMA buffer unmapping in mvneta_rx() Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 14/30] rtnetlink: catch -EOPNOTSUPP errors from ndo_bridge_getlink Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 15/30] net/mlx4_en: really allow to change RSS key Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 16/30] macvtap: fix TUNSETSNDBUF values > 64k Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 17/30] netlink: Fix autobind race condition that leads to zero port ID Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 18/30] netlink: Replace rhash_portid with bound Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 19/30] net: dsa: actually force the speed on the CPU port Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 20/30] openvswitch: Zero flows on allocation Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 21/30] tcp: add proper TS val into RST packets Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 22/30] Fix AF_PACKET ABI breakage in 4.2 Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 23/30] net: revert "net_sched: move tp->root allocation into fw_init()" Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 24/30] fib_rules: fix fib rule dumps across multiple skbs Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 25/30] ppp: fix lockdep splat in ppp_dev_uninit() Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 26/30] net: dsa: bcm_sf2: Do not override speed settings Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 27/30] net: phy: fixed_phy: handle link-down case Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 28/30] of_mdio: add new DT property managed to specify the PHY management type Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 29/30] mvneta: use inband status only when explicitly enabled Greg Kroah-Hartman
2015-10-01 9:21 ` [PATCH 4.2 30/30] net/mlx4_core: Capping number of requested MSIXs to MAX_MSIX Greg Kroah-Hartman
2015-10-02 1:27 ` [PATCH 4.2 00/30] 4.2.3-stable review Guenter Roeck
2015-10-03 11:37 ` Greg Kroah-Hartman
2015-10-03 14:45 ` Guenter Roeck
2015-10-18 0:45 ` Greg Kroah-Hartman
2015-10-02 5:14 ` Sudip Mukherjee
2015-10-03 11:36 ` Greg Kroah-Hartman
2015-10-02 15:41 ` Shuah Khan
2015-10-03 11:36 ` Greg Kroah-Hartman
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=20151001092038.273787003@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mlangsdo@redhat.com \
--cc=msalter@redhat.com \
--cc=stable@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).