diff options
Diffstat (limited to 'fs/ocfs2/cluster/tcp.c')
-rw-r--r-- | fs/ocfs2/cluster/tcp.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c index aa88bd8bcedc..d644dc611425 100644 --- a/fs/ocfs2/cluster/tcp.c +++ b/fs/ocfs2/cluster/tcp.c | |||
@@ -406,6 +406,9 @@ static void sc_kref_release(struct kref *kref) | |||
406 | sc->sc_node = NULL; | 406 | sc->sc_node = NULL; |
407 | 407 | ||
408 | o2net_debug_del_sc(sc); | 408 | o2net_debug_del_sc(sc); |
409 | |||
410 | if (sc->sc_page) | ||
411 | __free_page(sc->sc_page); | ||
409 | kfree(sc); | 412 | kfree(sc); |
410 | } | 413 | } |
411 | 414 | ||
@@ -630,19 +633,19 @@ static void o2net_state_change(struct sock *sk) | |||
630 | state_change = sc->sc_state_change; | 633 | state_change = sc->sc_state_change; |
631 | 634 | ||
632 | switch(sk->sk_state) { | 635 | switch(sk->sk_state) { |
633 | /* ignore connecting sockets as they make progress */ | 636 | /* ignore connecting sockets as they make progress */ |
634 | case TCP_SYN_SENT: | 637 | case TCP_SYN_SENT: |
635 | case TCP_SYN_RECV: | 638 | case TCP_SYN_RECV: |
636 | break; | 639 | break; |
637 | case TCP_ESTABLISHED: | 640 | case TCP_ESTABLISHED: |
638 | o2net_sc_queue_work(sc, &sc->sc_connect_work); | 641 | o2net_sc_queue_work(sc, &sc->sc_connect_work); |
639 | break; | 642 | break; |
640 | default: | 643 | default: |
641 | printk(KERN_INFO "o2net: Connection to " SC_NODEF_FMT | 644 | printk(KERN_INFO "o2net: Connection to " SC_NODEF_FMT |
642 | " shutdown, state %d\n", | 645 | " shutdown, state %d\n", |
643 | SC_NODEF_ARGS(sc), sk->sk_state); | 646 | SC_NODEF_ARGS(sc), sk->sk_state); |
644 | o2net_sc_queue_work(sc, &sc->sc_shutdown_work); | 647 | o2net_sc_queue_work(sc, &sc->sc_shutdown_work); |
645 | break; | 648 | break; |
646 | } | 649 | } |
647 | out: | 650 | out: |
648 | read_unlock(&sk->sk_callback_lock); | 651 | read_unlock(&sk->sk_callback_lock); |