diff options
Diffstat (limited to 'arch/ia64/sn/kernel/xpc_main.c')
-rw-r--r-- | arch/ia64/sn/kernel/xpc_main.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c index c75f8aeefc2b..9cd460dfe27e 100644 --- a/arch/ia64/sn/kernel/xpc_main.c +++ b/arch/ia64/sn/kernel/xpc_main.c | |||
@@ -575,18 +575,21 @@ xpc_activate_partition(struct xpc_partition *part) | |||
575 | 575 | ||
576 | spin_lock_irqsave(&part->act_lock, irq_flags); | 576 | spin_lock_irqsave(&part->act_lock, irq_flags); |
577 | 577 | ||
578 | pid = kernel_thread(xpc_activating, (void *) ((u64) partid), 0); | ||
579 | |||
580 | DBUG_ON(part->act_state != XPC_P_INACTIVE); | 578 | DBUG_ON(part->act_state != XPC_P_INACTIVE); |
581 | 579 | ||
582 | if (pid > 0) { | 580 | part->act_state = XPC_P_ACTIVATION_REQ; |
583 | part->act_state = XPC_P_ACTIVATION_REQ; | 581 | XPC_SET_REASON(part, xpcCloneKThread, __LINE__); |
584 | XPC_SET_REASON(part, xpcCloneKThread, __LINE__); | ||
585 | } else { | ||
586 | XPC_SET_REASON(part, xpcCloneKThreadFailed, __LINE__); | ||
587 | } | ||
588 | 582 | ||
589 | spin_unlock_irqrestore(&part->act_lock, irq_flags); | 583 | spin_unlock_irqrestore(&part->act_lock, irq_flags); |
584 | |||
585 | pid = kernel_thread(xpc_activating, (void *) ((u64) partid), 0); | ||
586 | |||
587 | if (unlikely(pid <= 0)) { | ||
588 | spin_lock_irqsave(&part->act_lock, irq_flags); | ||
589 | part->act_state = XPC_P_INACTIVE; | ||
590 | XPC_SET_REASON(part, xpcCloneKThreadFailed, __LINE__); | ||
591 | spin_unlock_irqrestore(&part->act_lock, irq_flags); | ||
592 | } | ||
590 | } | 593 | } |
591 | 594 | ||
592 | 595 | ||