Skip to content

Commit

Permalink
smsc911x: Fix crash seen if neither ACPI nor OF is configured or used
Browse files Browse the repository at this point in the history
Commit 0b50dc4 ("Convert smsc911x to use ACPI as well as DT") makes
the call to smsc911x_probe_config() unconditional, and no longer fails if
there is no device node. device_get_phy_mode() is called unconditionally,
and if there is no phy node configured returns an error code. This error
code is assigned to phy_interface, and interpreted elsewhere in the code
as valid phy mode. This in turn causes qemu to crash when running a
variant of realview_pb_defconfig.

	qemu: hardware error: lan9118_read: Bad reg 0x86

Fixes: 0b50dc4 ("Convert smsc911x to use ACPI as well as DT")
Cc: Jeremy Linton <jeremy.linton@arm.com>
Cc Graeme Gregory <graeme.gregory@linaro.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Guenter Roeck authored and David S. Miller committed Aug 17, 2015
1 parent c87acb2 commit 62ee783
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/net/ethernet/smsc/smsc911x.c
Original file line number Diff line number Diff line change
Expand Up @@ -2367,12 +2367,17 @@ static const struct smsc911x_ops shifted_smsc911x_ops = {
static int smsc911x_probe_config(struct smsc911x_platform_config *config,
struct device *dev)
{
int phy_interface;
u32 width = 0;

if (!dev)
return -ENODEV;

config->phy_interface = device_get_phy_mode(dev);
phy_interface = device_get_phy_mode(dev);
if (phy_interface < 0)
return phy_interface;

config->phy_interface = phy_interface;

device_get_mac_address(dev, config->mac, ETH_ALEN);

Expand Down

0 comments on commit 62ee783

Please sign in to comment.