• Jia-Ju Bai's avatar
    crypto: shash - Fix a sleep-in-atomic bug in shash_setkey_unaligned · 79d47dd6
    Jia-Ju Bai authored
    [ Upstream commit 9039f3ef ]
    
    The SCTP program may sleep under a spinlock, and the function call path is:
    sctp_generate_t3_rtx_event (acquire the spinlock)
      sctp_do_sm
        sctp_side_effects
          sctp_cmd_interpreter
            sctp_make_init_ack
              sctp_pack_cookie
                crypto_shash_setkey
                  shash_setkey_unaligned
                    kmalloc(GFP_KERNEL)
    
    For the same reason, the orinoco driver may sleep in interrupt handler,
    and the function call path is:
    orinoco_rx_isr_tasklet
      orinoco_rx
        orinoco_mic
          crypto_shash_setkey
            shash_setkey_unaligned
              kmalloc(GFP_KERNEL)
    
    To fix it, GFP_KERNEL is replaced with GFP_ATOMIC.
    This bug is found by my static analysis tool and my code review.
    Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@163.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    79d47dd6