aio: fix mremap after fork null-deref
commit81e9d6f864
upstream. Commite4a0d3e720
("aio: Make it possible to remap aio ring") introduced a null-deref if mremap is called on an old aio mapping after fork as mm->ioctx_table will be set to NULL. [jmoyer@redhat.com: fix 80 column issue] Link: https://lkml.kernel.org/r/x49sffq4nvg.fsf@segfault.boston.devel.redhat.com Fixes:e4a0d3e720
("aio: Make it possible to remap aio ring") Signed-off-by: Seth Jenkins <sethjenkins@google.com> Signed-off-by: Jeff Moyer <jmoyer@redhat.com> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Benjamin LaHaise <bcrl@kvack.org> Cc: Jann Horn <jannh@google.com> Cc: Pavel Emelyanov <xemul@parallels.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
3cfc5e84ac
Коммит
178993157e
4
fs/aio.c
4
fs/aio.c
|
@ -334,6 +334,9 @@ static int aio_ring_mremap(struct vm_area_struct *vma)
|
||||||
spin_lock(&mm->ioctx_lock);
|
spin_lock(&mm->ioctx_lock);
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
table = rcu_dereference(mm->ioctx_table);
|
table = rcu_dereference(mm->ioctx_table);
|
||||||
|
if (!table)
|
||||||
|
goto out_unlock;
|
||||||
|
|
||||||
for (i = 0; i < table->nr; i++) {
|
for (i = 0; i < table->nr; i++) {
|
||||||
struct kioctx *ctx;
|
struct kioctx *ctx;
|
||||||
|
|
||||||
|
@ -347,6 +350,7 @@ static int aio_ring_mremap(struct vm_area_struct *vma)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out_unlock:
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
spin_unlock(&mm->ioctx_lock);
|
spin_unlock(&mm->ioctx_lock);
|
||||||
return res;
|
return res;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче