staging: most: dim2-hdm: fix possible kernel freeze when reusing a dim2 channel
authorChristian Gromm <christian.gromm@microchip.com>
Mon, 13 Jun 2016 14:24:25 +0000 (16:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Aug 2016 18:18:56 +0000 (20:18 +0200)
If a DIM2 channel is being closed while it is busy, the channels's status
flag could possibly stay active for this very channel. This causes the
kernel to freeze by the time the channel is opened again.

This patch fixes the problem.

Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de>
Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/most/hdm-dim2/dim2_hal.c

index 8783dbbdafdc275f3151081ae14177bf60f2b4b2..a0b935c726718775f09437bde9dc164486bdad54 100644 (file)
@@ -342,6 +342,9 @@ static void dim2_clear_channel(u8 ch_addr)
 
        dim2_clear_cat(MLB_CAT, ch_addr);
        dim2_clear_cdt(ch_addr);
+
+       /* clear channel status bit */
+       dimcb_io_write(&g.dim2->ACSR0, bit_mask(ch_addr));
 }
 
 /* -------------------------------------------------------------------------- */