diff mbox

amdkfd: use atomic allocations within srcu callbacks

Message ID 1417619976-8498-1-git-send-email-sasha.levin@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sasha Levin Dec. 3, 2014, 3:19 p.m. UTC
srcu callbacks are running in atomic context, we can't allocate using
__GFP_WAIT.

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_process.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Oded Gabbay Dec. 4, 2014, 12:27 p.m. UTC | #1
On 12/03/2014 05:19 PM, Sasha Levin wrote:
> srcu callbacks are running in atomic context, we can't allocate using
> __GFP_WAIT.
>
> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
> ---
>   drivers/gpu/drm/amd/amdkfd/kfd_process.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
> index b4f49ac..b85eb0b 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
> @@ -196,7 +196,7 @@ static void kfd_process_destroy_delayed(struct rcu_head *rcu)
>   	mmdrop(p->mm);
>
>   	work = (struct kfd_process_release_work *)
> -		kmalloc(sizeof(struct kfd_process_release_work), GFP_KERNEL);
> +		kmalloc(sizeof(struct kfd_process_release_work), GFP_ATOMIC);
>
>   	if (work) {
>   		INIT_WORK((struct work_struct *) work, kfd_process_wq_release);
>

Thanks!
Applied to my -next tree.

Oded
diff mbox

Patch

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index b4f49ac..b85eb0b 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -196,7 +196,7 @@  static void kfd_process_destroy_delayed(struct rcu_head *rcu)
 	mmdrop(p->mm);
 
 	work = (struct kfd_process_release_work *)
-		kmalloc(sizeof(struct kfd_process_release_work), GFP_KERNEL);
+		kmalloc(sizeof(struct kfd_process_release_work), GFP_ATOMIC);
 
 	if (work) {
 		INIT_WORK((struct work_struct *) work, kfd_process_wq_release);