diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2013-01-07 10:00:16 (GMT) |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2013-01-19 23:16:40 (GMT) |
commit | 17bebdcd5c7c56cde82b8ccb02c5cea69e05f6d3 (patch) | |
tree | 4f2eb74f269a44c2961dc6f74c4572031fb32ef8 /drivers/ata/libata-acpi.c | |
parent | d20fb18be246d196225ed151c126832b2dab6506 (diff) | |
download | linux-fsl-qoriq-17bebdcd5c7c56cde82b8ccb02c5cea69e05f6d3.tar.xz |
crypto: bfin_crc - reposition free_irq to avoid access to invalid data
The data referenced by an interrupt handler should not be freed before the
interrupt is ended. The handler is bfin_crypto_crc_handler. It may refer
to crc->regs, which is released by the iounmap.
Furthermore, the second argument to all calls to free_irq is incorrect. It
should be the same as the last argument of request_irq, which is crc,
rather than crc->dev.
The semantic match that finds the first problem is as follows:
(http://coccinelle.lip6.fr/)
// <smpl>
@fn exists@
expression list es;
expression a,b;
identifier f;
@@
if (...) {
... when any
free_irq(a,b);
... when any
f(es);
... when any
return ...;
}
@@
expression list fn.es;
expression fn.a,fn.b;
identifier fn.f;
@@
*f(es);
... when any
*free_irq(a,b);
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/ata/libata-acpi.c')
0 files changed, 0 insertions, 0 deletions