Messages in this thread Patch in this message | | | From | Sasha Levin <> | Subject | [PATCH] ipc: don't allocate with GFP_KERNEL inside rcu read lock | Date | Mon, 10 Jun 2013 12:14:30 -0400 |
| |
ipc_addid() is protected by a rcu read lock, which means we can't allocate using GFP_KERNEL inside it.
Signed-off-by: Sasha Levin <sasha.levin@oracle.com> ---
Another option would be to call idr_preload from outside the read lock, but that complicates the code much more than this fix. If that's the preferred method to fix it I can resend that solution instead.
ipc/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ipc/util.c b/ipc/util.c index a746abb..00aca85 100644 --- a/ipc/util.c +++ b/ipc/util.c @@ -261,7 +261,7 @@ int ipc_addid(struct ipc_ids* ids, struct kern_ipc_perm* new, int size) if (ids->in_use >= size) return -ENOSPC; - idr_preload(GFP_KERNEL); + idr_preload(GFP_ATOMIC); spin_lock_init(&new->lock); new->deleted = 0; -- 1.8.1.2
| |