X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=drivers%2Flguest%2Finterrupts_and_traps.c;h=415fab0125acd8e465e1fe2e6fe8241d75894868;hb=f60a0a79846abed04ad5abddb5dafd14b66e1ab0;hp=a1039068f95c378cd85b2d6ff2f0f6729c003db2;hpb=d6d5aeb661fc14655c417f3582ae7ec52985d2a8;p=linux-2.6-omap-h63xx.git diff --git a/drivers/lguest/interrupts_and_traps.c b/drivers/lguest/interrupts_and_traps.c index a1039068f95..415fab0125a 100644 --- a/drivers/lguest/interrupts_and_traps.c +++ b/drivers/lguest/interrupts_and_traps.c @@ -222,11 +222,16 @@ bool check_syscall_vector(struct lguest *lg) int init_interrupts(void) { /* If they want some strange system call vector, reserve it now */ - if (syscall_vector != SYSCALL_VECTOR - && test_and_set_bit(syscall_vector, used_vectors)) { - printk("lg: couldn't reserve syscall %u\n", syscall_vector); - return -EBUSY; + if (syscall_vector != SYSCALL_VECTOR) { + if (test_bit(syscall_vector, used_vectors) || + vector_used_by_percpu_irq(syscall_vector)) { + printk(KERN_ERR "lg: couldn't reserve syscall %u\n", + syscall_vector); + return -EBUSY; + } + set_bit(syscall_vector, used_vectors); } + return 0; }