Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[S390] arch/s390/kvm: Use GFP_ATOMIC when a lock is held

The containing function is called from several places. At one of them, in
the function __sigp_stop, the spin lock &fi->lock is held.

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@gfp exists@
identifier fn;
position p;
@@

fn(...) {
... when != spin_unlock
when any
GFP_KERNEL@p
... when any
}

@locked@
identifier gfp.fn;
@@

spin_lock(...)
... when != spin_unlock
fn(...)

@depends on locked@
position gfp.p;
@@

- GFP_KERNEL@p
+ GFP_ATOMIC
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

authored by

Julia Lawall and committed by
Martin Schwidefsky
9940fa80 3164a3cb

+1 -1
+1 -1
arch/s390/kvm/sigp.c
··· 113 113 { 114 114 struct kvm_s390_interrupt_info *inti; 115 115 116 - inti = kzalloc(sizeof(*inti), GFP_KERNEL); 116 + inti = kzalloc(sizeof(*inti), GFP_ATOMIC); 117 117 if (!inti) 118 118 return -ENOMEM; 119 119 inti->type = KVM_S390_SIGP_STOP;