• Herbert Xu's avatar
    crypto: api - Fix use-after-free and race in crypto_spawn_alg · 6603523b
    Herbert Xu authored
    There are two problems in crypto_spawn_alg.  First of all it may
    return spawn->alg even if spawn->dead is set.  This results in a
    double-free as detected by syzbot.
    
    Secondly the setting of the DYING flag is racy because we hold
    the read-lock instead of the write-lock.  We should instead call
    crypto_shoot_alg in a safe manner by gaining a refcount, dropping
    the lock, and then releasing the refcount.
    
    This patch fixes both problems.
    
    Reported-by: syzbot+fc0674cde00b66844470@syzkaller.appspotmail.com
    Fixes: 4f87ee11 ("crypto: api - Do not zap spawn->alg")
    Fixes: 73669cc5 ("crypto: api - Fix race condition in...")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    6603523b
algapi.c 28.4 KB