diff options
Diffstat (limited to 'arch/sparc/kernel/ldc.c')
-rw-r--r-- | arch/sparc/kernel/ldc.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/arch/sparc/kernel/ldc.c b/arch/sparc/kernel/ldc.c index d68982330f66..6ce5d2598a09 100644 --- a/arch/sparc/kernel/ldc.c +++ b/arch/sparc/kernel/ldc.c | |||
@@ -625,22 +625,23 @@ static int process_ver_ack(struct ldc_channel *lp, struct ldc_version *vp) | |||
625 | static int process_ver_nack(struct ldc_channel *lp, struct ldc_version *vp) | 625 | static int process_ver_nack(struct ldc_channel *lp, struct ldc_version *vp) |
626 | { | 626 | { |
627 | struct ldc_version *vap; | 627 | struct ldc_version *vap; |
628 | struct ldc_packet *p; | ||
629 | unsigned long new_tail; | ||
628 | 630 | ||
629 | if ((vp->major == 0 && vp->minor == 0) || | 631 | if (vp->major == 0 && vp->minor == 0) |
630 | !(vap = find_by_major(vp->major))) { | 632 | return ldc_abort(lp); |
633 | |||
634 | vap = find_by_major(vp->major); | ||
635 | if (!vap) | ||
631 | return ldc_abort(lp); | 636 | return ldc_abort(lp); |
632 | } else { | ||
633 | struct ldc_packet *p; | ||
634 | unsigned long new_tail; | ||
635 | 637 | ||
636 | p = handshake_compose_ctrl(lp, LDC_INFO, LDC_VERS, | 638 | p = handshake_compose_ctrl(lp, LDC_INFO, LDC_VERS, |
637 | vap, sizeof(*vap), | 639 | vap, sizeof(*vap), |
638 | &new_tail); | 640 | &new_tail); |
639 | if (p) | 641 | if (!p) |
640 | return send_tx_packet(lp, p, new_tail); | 642 | return ldc_abort(lp); |
641 | else | 643 | |
642 | return ldc_abort(lp); | 644 | return send_tx_packet(lp, p, new_tail); |
643 | } | ||
644 | } | 645 | } |
645 | 646 | ||
646 | static int process_version(struct ldc_channel *lp, | 647 | static int process_version(struct ldc_channel *lp, |