.. | .. |
---|
43 | 43 | #include <linux/mount.h> |
---|
44 | 44 | #include <linux/pseudo_fs.h> |
---|
45 | 45 | |
---|
| 46 | +#include <asm/kmap_types.h> |
---|
46 | 47 | #include <linux/uaccess.h> |
---|
47 | 48 | #include <linux/nospec.h> |
---|
48 | 49 | |
---|
.. | .. |
---|
334 | 335 | spin_lock(&mm->ioctx_lock); |
---|
335 | 336 | rcu_read_lock(); |
---|
336 | 337 | table = rcu_dereference(mm->ioctx_table); |
---|
| 338 | + if (!table) |
---|
| 339 | + goto out_unlock; |
---|
| 340 | + |
---|
337 | 341 | for (i = 0; i < table->nr; i++) { |
---|
338 | 342 | struct kioctx *ctx; |
---|
339 | 343 | |
---|
.. | .. |
---|
347 | 351 | } |
---|
348 | 352 | } |
---|
349 | 353 | |
---|
| 354 | +out_unlock: |
---|
350 | 355 | rcu_read_unlock(); |
---|
351 | 356 | spin_unlock(&mm->ioctx_lock); |
---|
352 | 357 | return res; |
---|
.. | .. |
---|
1761 | 1766 | list_del_init(&req->wait.entry); |
---|
1762 | 1767 | list_del(&iocb->ki_list); |
---|
1763 | 1768 | iocb->ki_res.res = mangle_poll(mask); |
---|
1764 | | - if (iocb->ki_eventfd && !eventfd_signal_allowed()) { |
---|
| 1769 | + if (iocb->ki_eventfd && eventfd_signal_count()) { |
---|
1765 | 1770 | iocb = NULL; |
---|
1766 | 1771 | INIT_WORK(&req->work, aio_poll_put_work); |
---|
1767 | 1772 | schedule_work(&req->work); |
---|