diff options
| -rw-r--r-- | fs/aio.c | 2 |
1 files changed, 2 insertions, 0 deletions
| @@ -45,6 +45,7 @@ | |||
| 45 | 45 | ||
| 46 | #include <asm/kmap_types.h> | 46 | #include <asm/kmap_types.h> |
| 47 | #include <linux/uaccess.h> | 47 | #include <linux/uaccess.h> |
| 48 | #include <linux/nospec.h> | ||
| 48 | 49 | ||
| 49 | #include "internal.h" | 50 | #include "internal.h" |
| 50 | 51 | ||
| @@ -1038,6 +1039,7 @@ static struct kioctx *lookup_ioctx(unsigned long ctx_id) | |||
| 1038 | if (!table || id >= table->nr) | 1039 | if (!table || id >= table->nr) |
| 1039 | goto out; | 1040 | goto out; |
| 1040 | 1041 | ||
| 1042 | id = array_index_nospec(id, table->nr); | ||
| 1041 | ctx = rcu_dereference(table->table[id]); | 1043 | ctx = rcu_dereference(table->table[id]); |
| 1042 | if (ctx && ctx->user_id == ctx_id) { | 1044 | if (ctx && ctx->user_id == ctx_id) { |
| 1043 | if (percpu_ref_tryget_live(&ctx->users)) | 1045 | if (percpu_ref_tryget_live(&ctx->users)) |
