lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 16 Sep 2015 09:24:19 +0200
From:	Ulf Hansson <ulf.hansson@...aro.org>
To:	Robert Jarzmik <robert.jarzmik@...e.fr>
Cc:	linux-mmc <linux-mmc@...r.kernel.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	Petr Cvek <petr.cvek@....cz>
Subject: Re: [PATCH] mmc: pxamci: fix card detect threaded interrupt

On 12 September 2015 at 11:03, Robert Jarzmik <robert.jarzmik@...e.fr> wrote:
> Change the interrupt flavor of the card detection, from a hard interrupt
> to a threaded interrupt. There is no strong requirement for a hard
> interrupt.
>
> It fixes the case where the card detection is on a gpio expander, on I2C
> for example on zylonite board. In this case, the card detect netsted
> interrupt is called from a threaded interrupt. The request_irq() fails,
> because a hard irq cannot be a nested interrupt from a threaded
> interrupt (set __setup_irq()).
>
> This was tested on zylonite and mioa701 boards.

This may indeed fix that separate issue, but looking into pxamci
driver I realize that the card detect configuration suffers from other
issues as well.

1. The irq shouldn't be requested until after the host has been added.
Else an IRQ will call mmc_detect_change() with a non-added mmc host,
which is really a bad idea. :-)
2. The host_ops->get_cd() callback isn't assigned. Thus not allowing
the mmc core to find out whether the card is inserted or not.

So instead of this quick-fix, I suggest that pxamci convert to use the
mmc slot-gpio API, which means calling mmc_gpio[d]_request_cd() from
->probe() and assign the ->get_cd() callback, which use
mmc_gpio_get_cd().

What do you think?

Kind regards
Uffe

>
> Signed-off-by: Robert Jarzmik <robert.jarzmik@...e.fr>
> Cc: Petr Cvek <petr.cvek@....cz>
> ---
>  drivers/mmc/host/pxamci.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index 1420f29628c7..67c9d1443597 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
> @@ -814,8 +814,10 @@ static int pxamci_probe(struct platform_device *pdev)
>                 }
>                 gpio_direction_input(gpio_cd);
>
> -               ret = request_irq(gpio_to_irq(gpio_cd), pxamci_detect_irq,
> -                                 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
> +               ret = request_threaded_irq(gpio_to_irq(gpio_cd), NULL,
> +                                 pxamci_detect_irq,
> +                                 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
> +                                 IRQF_ONESHOT,
>                                   "mmc card detect", mmc);
>                 if (ret) {
>                         dev_err(&pdev->dev, "failed to request card detect IRQ\n");
> --
> 2.1.4
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ