• A
    can: c_can: fix race condition in c_can_open() · f461f27a
    AnilKumar Ch 提交于
    Fix the issue of C_CAN interrupts getting disabled forever when canconfig
    utility is used multiple times. According to NAPI usage we disable all
    the hardware interrupts in ISR and re-enable them in poll(). Current
    implementation calls napi_enable() after hardware interrupts are enabled.
    If we get any interrupts between these two steps then we do not process
    those interrupts because napi is not enabled. Mostly these interrupts
    come because of STATUS is not 0x7 or ERROR interrupts. If napi_enable()
    happens before HW interrupts enabled then c_can_poll() function will be
    called eventual re-enabling.
    
    This patch moves the napi_enable() call before interrupts enabled.
    
    Cc: stable@kernel.org # 2.6.39+
    Signed-off-by: NAnilKumar Ch <anilkumar@ti.com>
    Acked-by: NWolfgang Grandegger <wg@grandegger.com>
    Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
    f461f27a
c_can.c 31.1 KB