[bug report] mmc: sdhci: use WP GPIO in sdhci_check_ro()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Thomas Petazzoni,

The patch 6d5cd068ee59: "mmc: sdhci: use WP GPIO in sdhci_check_ro()"
from Feb 12, 2019, leads to the following Smatch static checker
warning:

	drivers/mmc/core/slot-gpio.c:69 mmc_gpio_get_ro()
	warn: sleeping in atomic context

drivers/mmc/host/sdhci.c
  2459        static int sdhci_check_ro(struct sdhci_host *host)
  2460        {
  2461                unsigned long flags;
  2462                int is_readonly;
  2463
  2464                spin_lock_irqsave(&host->lock, flags);
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Holding a spinlock.

  2465
  2466                if (host->flags & SDHCI_DEVICE_DEAD)
  2467                        is_readonly = 0;
  2468                else if (host->ops->get_ro)
  2469                        is_readonly = host->ops->get_ro(host);
  2470                else if (mmc_can_gpio_ro(host->mmc))
  2471                        is_readonly = mmc_gpio_get_ro(host->mmc);
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
This is a sleeping function.  See below.

  2472                else
  2473                        is_readonly = !(sdhci_readl(host, SDHCI_PRESENT_STATE)
  2474                                        & SDHCI_WRITE_PROTECT);
  2475
  2476                spin_unlock_irqrestore(&host->lock, flags);
  2477
  2478                /* This quirk needs to be replaced by a callback-function later */
  2479                return host->quirks & SDHCI_QUIRK_INVERTED_WRITE_PROTECT ?
  2480                        !is_readonly : is_readonly;
  2481        }

drivers/mmc/core/slot-gpio.c
    62 int mmc_gpio_get_ro(struct mmc_host *host)
    63 {
    64         struct mmc_gpio *ctx = host->slot.handler_priv;
    65 
    66         if (!ctx || !ctx->ro_gpio)
    67                 return -ENOSYS;
    68 
--> 69         return gpiod_get_value_cansleep(ctx->ro_gpio);
                                      ^^^^^^^^

    70 }

regards,
dan carpenter



[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux