diff options
Diffstat (limited to 'arch/x86/kernel/apic/apic.c')
| -rw-r--r-- | arch/x86/kernel/apic/apic.c | 5 | 
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index 20d9a604da7c..770557110051 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -422,10 +422,9 @@ static unsigned int reserve_eilvt_offset(int offset, unsigned int new)  		if (vector && !eilvt_entry_is_changeable(vector, new))  			/* may not change if vectors are different */  			return rsvd; -		rsvd = atomic_cmpxchg(&eilvt_offsets[offset], rsvd, new); -	} while (rsvd != new); +	} while (!atomic_try_cmpxchg(&eilvt_offsets[offset], &rsvd, new)); -	rsvd &= ~APIC_EILVT_MASKED; +	rsvd = new & ~APIC_EILVT_MASKED;  	if (rsvd && rsvd != vector)  		pr_info("LVT offset %d assigned for vector 0x%02x\n",  			offset, rsvd);  |