| Submitter | Ben Hutchings |
|---|---|
| Date | Dec. 12, 2008, 12:59 p.m. |
| Message ID | <20081212125922.GB10372@solarflare.com> |
| Download | mbox | patch |
| Permalink | /patch/13732/ |
| State | Accepted |
| Delegated to: | David Miller |
| Headers | show |
Comments
From: Ben Hutchings <bhutchings@solarflare.com> Date: Fri, 12 Dec 2008 12:59:23 +0000 > ethtool must contend with the MTD driver for the SPI bus lock, which > may carry out long operations such as flash erase. Allow it to be > interrupted while waiting. > > Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Patch
diff --git a/drivers/net/sfc/ethtool.c b/drivers/net/sfc/ethtool.c index eab3e5c..3aaece6 100644 --- a/drivers/net/sfc/ethtool.c +++ b/drivers/net/sfc/ethtool.c @@ -568,10 +568,13 @@ static int efx_ethtool_get_eeprom(struct net_device *net_dev, size_t len; int rc; - mutex_lock(&efx->spi_lock); + rc = mutex_lock_interruptible(&efx->spi_lock); + if (rc) + return rc; rc = falcon_spi_read(spi, eeprom->offset + EFX_EEPROM_BOOTCONFIG_START, eeprom->len, &len, buf); mutex_unlock(&efx->spi_lock); + eeprom->magic = EFX_ETHTOOL_EEPROM_MAGIC; eeprom->len = len; return rc; @@ -588,10 +591,13 @@ static int efx_ethtool_set_eeprom(struct net_device *net_dev, if (eeprom->magic != EFX_ETHTOOL_EEPROM_MAGIC) return -EINVAL; - mutex_lock(&efx->spi_lock); + rc = mutex_lock_interruptible(&efx->spi_lock); + if (rc) + return rc; rc = falcon_spi_write(spi, eeprom->offset + EFX_EEPROM_BOOTCONFIG_START, eeprom->len, &len, buf); mutex_unlock(&efx->spi_lock); + eeprom->len = len; return rc; }
ethtool must contend with the MTD driver for the SPI bus lock, which may carry out long operations such as flash erase. Allow it to be interrupted while waiting. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> --- drivers/net/sfc/ethtool.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-)