• Sean Young's avatar
    media: rc: sir_ir: detect presence of port · 30b4e122
    Sean Young authored
    Without this test, sir_ir clumsy claims resources for a device which
    does not exist.
    
    The 0-day kernel test robot reports the following errors (in a loop):
    	sir_ir sir_ir.0: Trapped in interrupt
    	genirq: Flags mismatch irq 4. 00000000 (ttyS0) vs. 00000000 (sir_ir)
    
    When sir_ir is loaded with the default io and irq, the following happens:
     - sir_ir claims irq 4
     - user space opens /dev/ttyS0
     - in serial8250_do_startup(), some setup is done for ttyS0, which causes
       irq 4 to fire (in THRE test)
     - sir_ir does not realise it was not for it, and spins until the "trapped
       in interrupt"
     - now serial driver calls setup_irq() and fails and we get the
       "Flags mismatch" error.
    
    There is no port present at 0x3e8 so simply check for the presence of a
    port, as suggested by Linus.
    Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
    Tested-by: default avatarFengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: default avatarSean Young <sean@mess.org>
    Cc: <stable@vger.kernel.org> # 4.12+
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    30b4e122
sir_ir.c 10.3 KB