net: mptcp: improve fallback to TCP
[linux-2.6-microblaze.git] / net / mptcp / protocol.c
1 // SPDX-License-Identifier: GPL-2.0
2 /* Multipath TCP
3  *
4  * Copyright (c) 2017 - 2019, Intel Corporation.
5  */
6
7 #define pr_fmt(fmt) "MPTCP: " fmt
8
9 #include <linux/kernel.h>
10 #include <linux/module.h>
11 #include <linux/netdevice.h>
12 #include <linux/sched/signal.h>
13 #include <linux/atomic.h>
14 #include <net/sock.h>
15 #include <net/inet_common.h>
16 #include <net/inet_hashtables.h>
17 #include <net/protocol.h>
18 #include <net/tcp.h>
19 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
20 #include <net/transp_v6.h>
21 #endif
22 #include <net/mptcp.h>
23 #include "protocol.h"
24 #include "mib.h"
25
26 #define MPTCP_SAME_STATE TCP_MAX_STATES
27
28 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
29 struct mptcp6_sock {
30         struct mptcp_sock msk;
31         struct ipv6_pinfo np;
32 };
33 #endif
34
35 struct mptcp_skb_cb {
36         u32 offset;
37 };
38
39 #define MPTCP_SKB_CB(__skb)     ((struct mptcp_skb_cb *)&((__skb)->cb[0]))
40
41 static struct percpu_counter mptcp_sockets_allocated;
42
43 /* If msk has an initial subflow socket, and the MP_CAPABLE handshake has not
44  * completed yet or has failed, return the subflow socket.
45  * Otherwise return NULL.
46  */
47 static struct socket *__mptcp_nmpc_socket(const struct mptcp_sock *msk)
48 {
49         if (!msk->subflow || READ_ONCE(msk->can_ack))
50                 return NULL;
51
52         return msk->subflow;
53 }
54
55 static struct socket *mptcp_is_tcpsk(struct sock *sk)
56 {
57         struct socket *sock = sk->sk_socket;
58
59         if (sock->sk != sk)
60                 return NULL;
61
62         if (unlikely(sk->sk_prot == &tcp_prot)) {
63                 /* we are being invoked after mptcp_accept() has
64                  * accepted a non-mp-capable flow: sk is a tcp_sk,
65                  * not an mptcp one.
66                  *
67                  * Hand the socket over to tcp so all further socket ops
68                  * bypass mptcp.
69                  */
70                 sock->ops = &inet_stream_ops;
71                 return sock;
72 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
73         } else if (unlikely(sk->sk_prot == &tcpv6_prot)) {
74                 sock->ops = &inet6_stream_ops;
75                 return sock;
76 #endif
77         }
78
79         return NULL;
80 }
81
82 static struct socket *__mptcp_tcp_fallback(struct mptcp_sock *msk)
83 {
84         struct socket *sock;
85
86         sock_owned_by_me((const struct sock *)msk);
87
88         sock = mptcp_is_tcpsk((struct sock *)msk);
89         if (unlikely(sock))
90                 return sock;
91
92         if (likely(!__mptcp_check_fallback(msk)))
93                 return NULL;
94
95         return msk->subflow;
96 }
97
98 static bool __mptcp_can_create_subflow(const struct mptcp_sock *msk)
99 {
100         return !msk->first;
101 }
102
103 static struct socket *__mptcp_socket_create(struct mptcp_sock *msk, int state)
104 {
105         struct mptcp_subflow_context *subflow;
106         struct sock *sk = (struct sock *)msk;
107         struct socket *ssock;
108         int err;
109
110         ssock = __mptcp_tcp_fallback(msk);
111         if (unlikely(ssock))
112                 return ssock;
113
114         ssock = __mptcp_nmpc_socket(msk);
115         if (ssock)
116                 goto set_state;
117
118         if (!__mptcp_can_create_subflow(msk))
119                 return ERR_PTR(-EINVAL);
120
121         err = mptcp_subflow_create_socket(sk, &ssock);
122         if (err)
123                 return ERR_PTR(err);
124
125         msk->first = ssock->sk;
126         msk->subflow = ssock;
127         subflow = mptcp_subflow_ctx(ssock->sk);
128         list_add(&subflow->node, &msk->conn_list);
129         subflow->request_mptcp = 1;
130
131         /* accept() will wait on first subflow sk_wq, and we always wakes up
132          * via msk->sk_socket
133          */
134         RCU_INIT_POINTER(msk->first->sk_wq, &sk->sk_socket->wq);
135
136 set_state:
137         if (state != MPTCP_SAME_STATE)
138                 inet_sk_state_store(sk, state);
139         return ssock;
140 }
141
142 static void __mptcp_move_skb(struct mptcp_sock *msk, struct sock *ssk,
143                              struct sk_buff *skb,
144                              unsigned int offset, size_t copy_len)
145 {
146         struct sock *sk = (struct sock *)msk;
147         struct sk_buff *tail;
148
149         __skb_unlink(skb, &ssk->sk_receive_queue);
150
151         skb_ext_reset(skb);
152         skb_orphan(skb);
153         msk->ack_seq += copy_len;
154
155         tail = skb_peek_tail(&sk->sk_receive_queue);
156         if (offset == 0 && tail) {
157                 bool fragstolen;
158                 int delta;
159
160                 if (skb_try_coalesce(tail, skb, &fragstolen, &delta)) {
161                         kfree_skb_partial(skb, fragstolen);
162                         atomic_add(delta, &sk->sk_rmem_alloc);
163                         sk_mem_charge(sk, delta);
164                         return;
165                 }
166         }
167
168         skb_set_owner_r(skb, sk);
169         __skb_queue_tail(&sk->sk_receive_queue, skb);
170         MPTCP_SKB_CB(skb)->offset = offset;
171 }
172
173 /* both sockets must be locked */
174 static bool mptcp_subflow_dsn_valid(const struct mptcp_sock *msk,
175                                     struct sock *ssk)
176 {
177         struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
178         u64 dsn = mptcp_subflow_get_mapped_dsn(subflow);
179
180         /* revalidate data sequence number.
181          *
182          * mptcp_subflow_data_available() is usually called
183          * without msk lock.  Its unlikely (but possible)
184          * that msk->ack_seq has been advanced since the last
185          * call found in-sequence data.
186          */
187         if (likely(dsn == msk->ack_seq))
188                 return true;
189
190         subflow->data_avail = 0;
191         return mptcp_subflow_data_available(ssk);
192 }
193
194 static bool __mptcp_move_skbs_from_subflow(struct mptcp_sock *msk,
195                                            struct sock *ssk,
196                                            unsigned int *bytes)
197 {
198         struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
199         struct sock *sk = (struct sock *)msk;
200         unsigned int moved = 0;
201         bool more_data_avail;
202         struct tcp_sock *tp;
203         bool done = false;
204
205         if (!mptcp_subflow_dsn_valid(msk, ssk)) {
206                 *bytes = 0;
207                 return false;
208         }
209
210         if (!(sk->sk_userlocks & SOCK_RCVBUF_LOCK)) {
211                 int rcvbuf = max(ssk->sk_rcvbuf, sk->sk_rcvbuf);
212
213                 if (rcvbuf > sk->sk_rcvbuf)
214                         sk->sk_rcvbuf = rcvbuf;
215         }
216
217         tp = tcp_sk(ssk);
218         do {
219                 u32 map_remaining, offset;
220                 u32 seq = tp->copied_seq;
221                 struct sk_buff *skb;
222                 bool fin;
223
224                 /* try to move as much data as available */
225                 map_remaining = subflow->map_data_len -
226                                 mptcp_subflow_get_map_offset(subflow);
227
228                 skb = skb_peek(&ssk->sk_receive_queue);
229                 if (!skb)
230                         break;
231
232                 if (__mptcp_check_fallback(msk)) {
233                         /* if we are running under the workqueue, TCP could have
234                          * collapsed skbs between dummy map creation and now
235                          * be sure to adjust the size
236                          */
237                         map_remaining = skb->len;
238                         subflow->map_data_len = skb->len;
239                 }
240
241                 offset = seq - TCP_SKB_CB(skb)->seq;
242                 fin = TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN;
243                 if (fin) {
244                         done = true;
245                         seq++;
246                 }
247
248                 if (offset < skb->len) {
249                         size_t len = skb->len - offset;
250
251                         if (tp->urg_data)
252                                 done = true;
253
254                         __mptcp_move_skb(msk, ssk, skb, offset, len);
255                         seq += len;
256                         moved += len;
257
258                         if (WARN_ON_ONCE(map_remaining < len))
259                                 break;
260                 } else {
261                         WARN_ON_ONCE(!fin);
262                         sk_eat_skb(ssk, skb);
263                         done = true;
264                 }
265
266                 WRITE_ONCE(tp->copied_seq, seq);
267                 more_data_avail = mptcp_subflow_data_available(ssk);
268
269                 if (atomic_read(&sk->sk_rmem_alloc) > READ_ONCE(sk->sk_rcvbuf)) {
270                         done = true;
271                         break;
272                 }
273         } while (more_data_avail);
274
275         *bytes = moved;
276
277         return done;
278 }
279
280 /* In most cases we will be able to lock the mptcp socket.  If its already
281  * owned, we need to defer to the work queue to avoid ABBA deadlock.
282  */
283 static bool move_skbs_to_msk(struct mptcp_sock *msk, struct sock *ssk)
284 {
285         struct sock *sk = (struct sock *)msk;
286         unsigned int moved = 0;
287
288         if (READ_ONCE(sk->sk_lock.owned))
289                 return false;
290
291         if (unlikely(!spin_trylock_bh(&sk->sk_lock.slock)))
292                 return false;
293
294         /* must re-check after taking the lock */
295         if (!READ_ONCE(sk->sk_lock.owned))
296                 __mptcp_move_skbs_from_subflow(msk, ssk, &moved);
297
298         spin_unlock_bh(&sk->sk_lock.slock);
299
300         return moved > 0;
301 }
302
303 void mptcp_data_ready(struct sock *sk, struct sock *ssk)
304 {
305         struct mptcp_sock *msk = mptcp_sk(sk);
306
307         set_bit(MPTCP_DATA_READY, &msk->flags);
308
309         if (atomic_read(&sk->sk_rmem_alloc) < READ_ONCE(sk->sk_rcvbuf) &&
310             move_skbs_to_msk(msk, ssk))
311                 goto wake;
312
313         /* don't schedule if mptcp sk is (still) over limit */
314         if (atomic_read(&sk->sk_rmem_alloc) > READ_ONCE(sk->sk_rcvbuf))
315                 goto wake;
316
317         /* mptcp socket is owned, release_cb should retry */
318         if (!test_and_set_bit(TCP_DELACK_TIMER_DEFERRED,
319                               &sk->sk_tsq_flags)) {
320                 sock_hold(sk);
321
322                 /* need to try again, its possible release_cb() has already
323                  * been called after the test_and_set_bit() above.
324                  */
325                 move_skbs_to_msk(msk, ssk);
326         }
327 wake:
328         sk->sk_data_ready(sk);
329 }
330
331 static void __mptcp_flush_join_list(struct mptcp_sock *msk)
332 {
333         if (likely(list_empty(&msk->join_list)))
334                 return;
335
336         spin_lock_bh(&msk->join_list_lock);
337         list_splice_tail_init(&msk->join_list, &msk->conn_list);
338         spin_unlock_bh(&msk->join_list_lock);
339 }
340
341 static void mptcp_set_timeout(const struct sock *sk, const struct sock *ssk)
342 {
343         long tout = ssk && inet_csk(ssk)->icsk_pending ?
344                                       inet_csk(ssk)->icsk_timeout - jiffies : 0;
345
346         if (tout <= 0)
347                 tout = mptcp_sk(sk)->timer_ival;
348         mptcp_sk(sk)->timer_ival = tout > 0 ? tout : TCP_RTO_MIN;
349 }
350
351 static bool mptcp_timer_pending(struct sock *sk)
352 {
353         return timer_pending(&inet_csk(sk)->icsk_retransmit_timer);
354 }
355
356 static void mptcp_reset_timer(struct sock *sk)
357 {
358         struct inet_connection_sock *icsk = inet_csk(sk);
359         unsigned long tout;
360
361         /* should never be called with mptcp level timer cleared */
362         tout = READ_ONCE(mptcp_sk(sk)->timer_ival);
363         if (WARN_ON_ONCE(!tout))
364                 tout = TCP_RTO_MIN;
365         sk_reset_timer(sk, &icsk->icsk_retransmit_timer, jiffies + tout);
366 }
367
368 void mptcp_data_acked(struct sock *sk)
369 {
370         mptcp_reset_timer(sk);
371
372         if (!sk_stream_is_writeable(sk) &&
373             schedule_work(&mptcp_sk(sk)->work))
374                 sock_hold(sk);
375 }
376
377 void mptcp_subflow_eof(struct sock *sk)
378 {
379         struct mptcp_sock *msk = mptcp_sk(sk);
380
381         if (!test_and_set_bit(MPTCP_WORK_EOF, &msk->flags) &&
382             schedule_work(&msk->work))
383                 sock_hold(sk);
384 }
385
386 static void mptcp_check_for_eof(struct mptcp_sock *msk)
387 {
388         struct mptcp_subflow_context *subflow;
389         struct sock *sk = (struct sock *)msk;
390         int receivers = 0;
391
392         mptcp_for_each_subflow(msk, subflow)
393                 receivers += !subflow->rx_eof;
394
395         if (!receivers && !(sk->sk_shutdown & RCV_SHUTDOWN)) {
396                 /* hopefully temporary hack: propagate shutdown status
397                  * to msk, when all subflows agree on it
398                  */
399                 sk->sk_shutdown |= RCV_SHUTDOWN;
400
401                 smp_mb__before_atomic(); /* SHUTDOWN must be visible first */
402                 set_bit(MPTCP_DATA_READY, &msk->flags);
403                 sk->sk_data_ready(sk);
404         }
405 }
406
407 static void mptcp_stop_timer(struct sock *sk)
408 {
409         struct inet_connection_sock *icsk = inet_csk(sk);
410
411         sk_stop_timer(sk, &icsk->icsk_retransmit_timer);
412         mptcp_sk(sk)->timer_ival = 0;
413 }
414
415 static bool mptcp_ext_cache_refill(struct mptcp_sock *msk)
416 {
417         const struct sock *sk = (const struct sock *)msk;
418
419         if (!msk->cached_ext)
420                 msk->cached_ext = __skb_ext_alloc(sk->sk_allocation);
421
422         return !!msk->cached_ext;
423 }
424
425 static struct sock *mptcp_subflow_recv_lookup(const struct mptcp_sock *msk)
426 {
427         struct mptcp_subflow_context *subflow;
428         struct sock *sk = (struct sock *)msk;
429
430         sock_owned_by_me(sk);
431
432         mptcp_for_each_subflow(msk, subflow) {
433                 if (subflow->data_avail)
434                         return mptcp_subflow_tcp_sock(subflow);
435         }
436
437         return NULL;
438 }
439
440 static bool mptcp_skb_can_collapse_to(u64 write_seq,
441                                       const struct sk_buff *skb,
442                                       const struct mptcp_ext *mpext)
443 {
444         if (!tcp_skb_can_collapse_to(skb))
445                 return false;
446
447         /* can collapse only if MPTCP level sequence is in order */
448         return mpext && mpext->data_seq + mpext->data_len == write_seq;
449 }
450
451 static bool mptcp_frag_can_collapse_to(const struct mptcp_sock *msk,
452                                        const struct page_frag *pfrag,
453                                        const struct mptcp_data_frag *df)
454 {
455         return df && pfrag->page == df->page &&
456                 df->data_seq + df->data_len == msk->write_seq;
457 }
458
459 static void dfrag_uncharge(struct sock *sk, int len)
460 {
461         sk_mem_uncharge(sk, len);
462         sk_wmem_queued_add(sk, -len);
463 }
464
465 static void dfrag_clear(struct sock *sk, struct mptcp_data_frag *dfrag)
466 {
467         int len = dfrag->data_len + dfrag->overhead;
468
469         list_del(&dfrag->list);
470         dfrag_uncharge(sk, len);
471         put_page(dfrag->page);
472 }
473
474 static void mptcp_clean_una(struct sock *sk)
475 {
476         struct mptcp_sock *msk = mptcp_sk(sk);
477         struct mptcp_data_frag *dtmp, *dfrag;
478         bool cleaned = false;
479         u64 snd_una;
480
481         /* on fallback we just need to ignore snd_una, as this is really
482          * plain TCP
483          */
484         if (__mptcp_check_fallback(msk))
485                 atomic64_set(&msk->snd_una, msk->write_seq);
486         snd_una = atomic64_read(&msk->snd_una);
487
488         list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list) {
489                 if (after64(dfrag->data_seq + dfrag->data_len, snd_una))
490                         break;
491
492                 dfrag_clear(sk, dfrag);
493                 cleaned = true;
494         }
495
496         dfrag = mptcp_rtx_head(sk);
497         if (dfrag && after64(snd_una, dfrag->data_seq)) {
498                 u64 delta = dfrag->data_seq + dfrag->data_len - snd_una;
499
500                 dfrag->data_seq += delta;
501                 dfrag->data_len -= delta;
502
503                 dfrag_uncharge(sk, delta);
504                 cleaned = true;
505         }
506
507         if (cleaned) {
508                 sk_mem_reclaim_partial(sk);
509
510                 /* Only wake up writers if a subflow is ready */
511                 if (test_bit(MPTCP_SEND_SPACE, &msk->flags))
512                         sk_stream_write_space(sk);
513         }
514 }
515
516 /* ensure we get enough memory for the frag hdr, beyond some minimal amount of
517  * data
518  */
519 static bool mptcp_page_frag_refill(struct sock *sk, struct page_frag *pfrag)
520 {
521         if (likely(skb_page_frag_refill(32U + sizeof(struct mptcp_data_frag),
522                                         pfrag, sk->sk_allocation)))
523                 return true;
524
525         sk->sk_prot->enter_memory_pressure(sk);
526         sk_stream_moderate_sndbuf(sk);
527         return false;
528 }
529
530 static struct mptcp_data_frag *
531 mptcp_carve_data_frag(const struct mptcp_sock *msk, struct page_frag *pfrag,
532                       int orig_offset)
533 {
534         int offset = ALIGN(orig_offset, sizeof(long));
535         struct mptcp_data_frag *dfrag;
536
537         dfrag = (struct mptcp_data_frag *)(page_to_virt(pfrag->page) + offset);
538         dfrag->data_len = 0;
539         dfrag->data_seq = msk->write_seq;
540         dfrag->overhead = offset - orig_offset + sizeof(struct mptcp_data_frag);
541         dfrag->offset = offset + sizeof(struct mptcp_data_frag);
542         dfrag->page = pfrag->page;
543
544         return dfrag;
545 }
546
547 static int mptcp_sendmsg_frag(struct sock *sk, struct sock *ssk,
548                               struct msghdr *msg, struct mptcp_data_frag *dfrag,
549                               long *timeo, int *pmss_now,
550                               int *ps_goal)
551 {
552         int mss_now, avail_size, size_goal, offset, ret, frag_truesize = 0;
553         bool dfrag_collapsed, can_collapse = false;
554         struct mptcp_sock *msk = mptcp_sk(sk);
555         struct mptcp_ext *mpext = NULL;
556         bool retransmission = !!dfrag;
557         struct sk_buff *skb, *tail;
558         struct page_frag *pfrag;
559         struct page *page;
560         u64 *write_seq;
561         size_t psize;
562
563         /* use the mptcp page cache so that we can easily move the data
564          * from one substream to another, but do per subflow memory accounting
565          * Note: pfrag is used only !retransmission, but the compiler if
566          * fooled into a warning if we don't init here
567          */
568         pfrag = sk_page_frag(sk);
569         if (!retransmission) {
570                 write_seq = &msk->write_seq;
571                 page = pfrag->page;
572         } else {
573                 write_seq = &dfrag->data_seq;
574                 page = dfrag->page;
575         }
576
577         /* compute copy limit */
578         mss_now = tcp_send_mss(ssk, &size_goal, msg->msg_flags);
579         *pmss_now = mss_now;
580         *ps_goal = size_goal;
581         avail_size = size_goal;
582         skb = tcp_write_queue_tail(ssk);
583         if (skb) {
584                 mpext = skb_ext_find(skb, SKB_EXT_MPTCP);
585
586                 /* Limit the write to the size available in the
587                  * current skb, if any, so that we create at most a new skb.
588                  * Explicitly tells TCP internals to avoid collapsing on later
589                  * queue management operation, to avoid breaking the ext <->
590                  * SSN association set here
591                  */
592                 can_collapse = (size_goal - skb->len > 0) &&
593                               mptcp_skb_can_collapse_to(*write_seq, skb, mpext);
594                 if (!can_collapse)
595                         TCP_SKB_CB(skb)->eor = 1;
596                 else
597                         avail_size = size_goal - skb->len;
598         }
599
600         if (!retransmission) {
601                 /* reuse tail pfrag, if possible, or carve a new one from the
602                  * page allocator
603                  */
604                 dfrag = mptcp_rtx_tail(sk);
605                 offset = pfrag->offset;
606                 dfrag_collapsed = mptcp_frag_can_collapse_to(msk, pfrag, dfrag);
607                 if (!dfrag_collapsed) {
608                         dfrag = mptcp_carve_data_frag(msk, pfrag, offset);
609                         offset = dfrag->offset;
610                         frag_truesize = dfrag->overhead;
611                 }
612                 psize = min_t(size_t, pfrag->size - offset, avail_size);
613
614                 /* Copy to page */
615                 pr_debug("left=%zu", msg_data_left(msg));
616                 psize = copy_page_from_iter(pfrag->page, offset,
617                                             min_t(size_t, msg_data_left(msg),
618                                                   psize),
619                                             &msg->msg_iter);
620                 pr_debug("left=%zu", msg_data_left(msg));
621                 if (!psize)
622                         return -EINVAL;
623
624                 if (!sk_wmem_schedule(sk, psize + dfrag->overhead))
625                         return -ENOMEM;
626         } else {
627                 offset = dfrag->offset;
628                 psize = min_t(size_t, dfrag->data_len, avail_size);
629         }
630
631         /* tell the TCP stack to delay the push so that we can safely
632          * access the skb after the sendpages call
633          */
634         ret = do_tcp_sendpages(ssk, page, offset, psize,
635                                msg->msg_flags | MSG_SENDPAGE_NOTLAST | MSG_DONTWAIT);
636         if (ret <= 0)
637                 return ret;
638
639         frag_truesize += ret;
640         if (!retransmission) {
641                 if (unlikely(ret < psize))
642                         iov_iter_revert(&msg->msg_iter, psize - ret);
643
644                 /* send successful, keep track of sent data for mptcp-level
645                  * retransmission
646                  */
647                 dfrag->data_len += ret;
648                 if (!dfrag_collapsed) {
649                         get_page(dfrag->page);
650                         list_add_tail(&dfrag->list, &msk->rtx_queue);
651                         sk_wmem_queued_add(sk, frag_truesize);
652                 } else {
653                         sk_wmem_queued_add(sk, ret);
654                 }
655
656                 /* charge data on mptcp rtx queue to the master socket
657                  * Note: we charge such data both to sk and ssk
658                  */
659                 sk->sk_forward_alloc -= frag_truesize;
660         }
661
662         /* if the tail skb extension is still the cached one, collapsing
663          * really happened. Note: we can't check for 'same skb' as the sk_buff
664          * hdr on tail can be transmitted, freed and re-allocated by the
665          * do_tcp_sendpages() call
666          */
667         tail = tcp_write_queue_tail(ssk);
668         if (mpext && tail && mpext == skb_ext_find(tail, SKB_EXT_MPTCP)) {
669                 WARN_ON_ONCE(!can_collapse);
670                 mpext->data_len += ret;
671                 goto out;
672         }
673
674         skb = tcp_write_queue_tail(ssk);
675         mpext = __skb_ext_set(skb, SKB_EXT_MPTCP, msk->cached_ext);
676         msk->cached_ext = NULL;
677
678         memset(mpext, 0, sizeof(*mpext));
679         mpext->data_seq = *write_seq;
680         mpext->subflow_seq = mptcp_subflow_ctx(ssk)->rel_write_seq;
681         mpext->data_len = ret;
682         mpext->use_map = 1;
683         mpext->dsn64 = 1;
684
685         pr_debug("data_seq=%llu subflow_seq=%u data_len=%u dsn64=%d",
686                  mpext->data_seq, mpext->subflow_seq, mpext->data_len,
687                  mpext->dsn64);
688
689 out:
690         if (!retransmission)
691                 pfrag->offset += frag_truesize;
692         *write_seq += ret;
693         mptcp_subflow_ctx(ssk)->rel_write_seq += ret;
694
695         return ret;
696 }
697
698 static void mptcp_nospace(struct mptcp_sock *msk, struct socket *sock)
699 {
700         clear_bit(MPTCP_SEND_SPACE, &msk->flags);
701         smp_mb__after_atomic(); /* msk->flags is changed by write_space cb */
702
703         /* enables sk->write_space() callbacks */
704         set_bit(SOCK_NOSPACE, &sock->flags);
705 }
706
707 static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
708 {
709         struct mptcp_subflow_context *subflow;
710         struct sock *backup = NULL;
711
712         sock_owned_by_me((const struct sock *)msk);
713
714         if (!mptcp_ext_cache_refill(msk))
715                 return NULL;
716
717         mptcp_for_each_subflow(msk, subflow) {
718                 struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
719
720                 if (!sk_stream_memory_free(ssk)) {
721                         struct socket *sock = ssk->sk_socket;
722
723                         if (sock)
724                                 mptcp_nospace(msk, sock);
725
726                         return NULL;
727                 }
728
729                 if (subflow->backup) {
730                         if (!backup)
731                                 backup = ssk;
732
733                         continue;
734                 }
735
736                 return ssk;
737         }
738
739         return backup;
740 }
741
742 static void ssk_check_wmem(struct mptcp_sock *msk, struct sock *ssk)
743 {
744         struct socket *sock;
745
746         if (likely(sk_stream_is_writeable(ssk)))
747                 return;
748
749         sock = READ_ONCE(ssk->sk_socket);
750         if (sock)
751                 mptcp_nospace(msk, sock);
752 }
753
754 static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
755 {
756         int mss_now = 0, size_goal = 0, ret = 0;
757         struct mptcp_sock *msk = mptcp_sk(sk);
758         struct page_frag *pfrag;
759         size_t copied = 0;
760         struct sock *ssk;
761         bool tx_ok;
762         long timeo;
763
764         if (msg->msg_flags & ~(MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL))
765                 return -EOPNOTSUPP;
766
767         lock_sock(sk);
768
769         timeo = sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT);
770
771         if ((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) {
772                 ret = sk_stream_wait_connect(sk, &timeo);
773                 if (ret)
774                         goto out;
775         }
776
777         pfrag = sk_page_frag(sk);
778 restart:
779         mptcp_clean_una(sk);
780
781 wait_for_sndbuf:
782         __mptcp_flush_join_list(msk);
783         ssk = mptcp_subflow_get_send(msk);
784         while (!sk_stream_memory_free(sk) ||
785                !ssk ||
786                !mptcp_page_frag_refill(ssk, pfrag)) {
787                 if (ssk) {
788                         /* make sure retransmit timer is
789                          * running before we wait for memory.
790                          *
791                          * The retransmit timer might be needed
792                          * to make the peer send an up-to-date
793                          * MPTCP Ack.
794                          */
795                         mptcp_set_timeout(sk, ssk);
796                         if (!mptcp_timer_pending(sk))
797                                 mptcp_reset_timer(sk);
798                 }
799
800                 ret = sk_stream_wait_memory(sk, &timeo);
801                 if (ret)
802                         goto out;
803
804                 mptcp_clean_una(sk);
805
806                 ssk = mptcp_subflow_get_send(msk);
807                 if (list_empty(&msk->conn_list)) {
808                         ret = -ENOTCONN;
809                         goto out;
810                 }
811         }
812
813         pr_debug("conn_list->subflow=%p", ssk);
814
815         lock_sock(ssk);
816         tx_ok = msg_data_left(msg);
817         while (tx_ok) {
818                 ret = mptcp_sendmsg_frag(sk, ssk, msg, NULL, &timeo, &mss_now,
819                                          &size_goal);
820                 if (ret < 0) {
821                         if (ret == -EAGAIN && timeo > 0) {
822                                 mptcp_set_timeout(sk, ssk);
823                                 release_sock(ssk);
824                                 goto restart;
825                         }
826                         break;
827                 }
828
829                 copied += ret;
830
831                 tx_ok = msg_data_left(msg);
832                 if (!tx_ok)
833                         break;
834
835                 if (!sk_stream_memory_free(ssk) ||
836                     !mptcp_page_frag_refill(ssk, pfrag) ||
837                     !mptcp_ext_cache_refill(msk)) {
838                         set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
839                         tcp_push(ssk, msg->msg_flags, mss_now,
840                                  tcp_sk(ssk)->nonagle, size_goal);
841                         mptcp_set_timeout(sk, ssk);
842                         release_sock(ssk);
843                         goto restart;
844                 }
845
846                 /* memory is charged to mptcp level socket as well, i.e.
847                  * if msg is very large, mptcp socket may run out of buffer
848                  * space.  mptcp_clean_una() will release data that has
849                  * been acked at mptcp level in the mean time, so there is
850                  * a good chance we can continue sending data right away.
851                  *
852                  * Normally, when the tcp subflow can accept more data, then
853                  * so can the MPTCP socket.  However, we need to cope with
854                  * peers that might lag behind in their MPTCP-level
855                  * acknowledgements, i.e.  data might have been acked at
856                  * tcp level only.  So, we must also check the MPTCP socket
857                  * limits before we send more data.
858                  */
859                 if (unlikely(!sk_stream_memory_free(sk))) {
860                         tcp_push(ssk, msg->msg_flags, mss_now,
861                                  tcp_sk(ssk)->nonagle, size_goal);
862                         mptcp_clean_una(sk);
863                         if (!sk_stream_memory_free(sk)) {
864                                 /* can't send more for now, need to wait for
865                                  * MPTCP-level ACKs from peer.
866                                  *
867                                  * Wakeup will happen via mptcp_clean_una().
868                                  */
869                                 mptcp_set_timeout(sk, ssk);
870                                 release_sock(ssk);
871                                 goto wait_for_sndbuf;
872                         }
873                 }
874         }
875
876         mptcp_set_timeout(sk, ssk);
877         if (copied) {
878                 ret = copied;
879                 tcp_push(ssk, msg->msg_flags, mss_now, tcp_sk(ssk)->nonagle,
880                          size_goal);
881
882                 /* start the timer, if it's not pending */
883                 if (!mptcp_timer_pending(sk))
884                         mptcp_reset_timer(sk);
885         }
886
887         ssk_check_wmem(msk, ssk);
888         release_sock(ssk);
889 out:
890         release_sock(sk);
891         return ret;
892 }
893
894 static void mptcp_wait_data(struct sock *sk, long *timeo)
895 {
896         DEFINE_WAIT_FUNC(wait, woken_wake_function);
897         struct mptcp_sock *msk = mptcp_sk(sk);
898
899         add_wait_queue(sk_sleep(sk), &wait);
900         sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk);
901
902         sk_wait_event(sk, timeo,
903                       test_and_clear_bit(MPTCP_DATA_READY, &msk->flags), &wait);
904
905         sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk);
906         remove_wait_queue(sk_sleep(sk), &wait);
907 }
908
909 static int __mptcp_recvmsg_mskq(struct mptcp_sock *msk,
910                                 struct msghdr *msg,
911                                 size_t len)
912 {
913         struct sock *sk = (struct sock *)msk;
914         struct sk_buff *skb;
915         int copied = 0;
916
917         while ((skb = skb_peek(&sk->sk_receive_queue)) != NULL) {
918                 u32 offset = MPTCP_SKB_CB(skb)->offset;
919                 u32 data_len = skb->len - offset;
920                 u32 count = min_t(size_t, len - copied, data_len);
921                 int err;
922
923                 err = skb_copy_datagram_msg(skb, offset, msg, count);
924                 if (unlikely(err < 0)) {
925                         if (!copied)
926                                 return err;
927                         break;
928                 }
929
930                 copied += count;
931
932                 if (count < data_len) {
933                         MPTCP_SKB_CB(skb)->offset += count;
934                         break;
935                 }
936
937                 __skb_unlink(skb, &sk->sk_receive_queue);
938                 __kfree_skb(skb);
939
940                 if (copied >= len)
941                         break;
942         }
943
944         return copied;
945 }
946
947 static bool __mptcp_move_skbs(struct mptcp_sock *msk)
948 {
949         unsigned int moved = 0;
950         bool done;
951
952         do {
953                 struct sock *ssk = mptcp_subflow_recv_lookup(msk);
954
955                 if (!ssk)
956                         break;
957
958                 lock_sock(ssk);
959                 done = __mptcp_move_skbs_from_subflow(msk, ssk, &moved);
960                 release_sock(ssk);
961         } while (!done);
962
963         return moved > 0;
964 }
965
966 static int mptcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
967                          int nonblock, int flags, int *addr_len)
968 {
969         struct mptcp_sock *msk = mptcp_sk(sk);
970         int copied = 0;
971         int target;
972         long timeo;
973
974         if (msg->msg_flags & ~(MSG_WAITALL | MSG_DONTWAIT))
975                 return -EOPNOTSUPP;
976
977         lock_sock(sk);
978         timeo = sock_rcvtimeo(sk, nonblock);
979
980         len = min_t(size_t, len, INT_MAX);
981         target = sock_rcvlowat(sk, flags & MSG_WAITALL, len);
982         __mptcp_flush_join_list(msk);
983
984         while (len > (size_t)copied) {
985                 int bytes_read;
986
987                 bytes_read = __mptcp_recvmsg_mskq(msk, msg, len - copied);
988                 if (unlikely(bytes_read < 0)) {
989                         if (!copied)
990                                 copied = bytes_read;
991                         goto out_err;
992                 }
993
994                 copied += bytes_read;
995
996                 if (skb_queue_empty(&sk->sk_receive_queue) &&
997                     __mptcp_move_skbs(msk))
998                         continue;
999
1000                 /* only the master socket status is relevant here. The exit
1001                  * conditions mirror closely tcp_recvmsg()
1002                  */
1003                 if (copied >= target)
1004                         break;
1005
1006                 if (copied) {
1007                         if (sk->sk_err ||
1008                             sk->sk_state == TCP_CLOSE ||
1009                             (sk->sk_shutdown & RCV_SHUTDOWN) ||
1010                             !timeo ||
1011                             signal_pending(current))
1012                                 break;
1013                 } else {
1014                         if (sk->sk_err) {
1015                                 copied = sock_error(sk);
1016                                 break;
1017                         }
1018
1019                         if (test_and_clear_bit(MPTCP_WORK_EOF, &msk->flags))
1020                                 mptcp_check_for_eof(msk);
1021
1022                         if (sk->sk_shutdown & RCV_SHUTDOWN)
1023                                 break;
1024
1025                         if (sk->sk_state == TCP_CLOSE) {
1026                                 copied = -ENOTCONN;
1027                                 break;
1028                         }
1029
1030                         if (!timeo) {
1031                                 copied = -EAGAIN;
1032                                 break;
1033                         }
1034
1035                         if (signal_pending(current)) {
1036                                 copied = sock_intr_errno(timeo);
1037                                 break;
1038                         }
1039                 }
1040
1041                 pr_debug("block timeout %ld", timeo);
1042                 mptcp_wait_data(sk, &timeo);
1043         }
1044
1045         if (skb_queue_empty(&sk->sk_receive_queue)) {
1046                 /* entire backlog drained, clear DATA_READY. */
1047                 clear_bit(MPTCP_DATA_READY, &msk->flags);
1048
1049                 /* .. race-breaker: ssk might have gotten new data
1050                  * after last __mptcp_move_skbs() returned false.
1051                  */
1052                 if (unlikely(__mptcp_move_skbs(msk)))
1053                         set_bit(MPTCP_DATA_READY, &msk->flags);
1054         } else if (unlikely(!test_bit(MPTCP_DATA_READY, &msk->flags))) {
1055                 /* data to read but mptcp_wait_data() cleared DATA_READY */
1056                 set_bit(MPTCP_DATA_READY, &msk->flags);
1057         }
1058 out_err:
1059         release_sock(sk);
1060         return copied;
1061 }
1062
1063 static void mptcp_retransmit_handler(struct sock *sk)
1064 {
1065         struct mptcp_sock *msk = mptcp_sk(sk);
1066
1067         if (atomic64_read(&msk->snd_una) == msk->write_seq) {
1068                 mptcp_stop_timer(sk);
1069         } else {
1070                 set_bit(MPTCP_WORK_RTX, &msk->flags);
1071                 if (schedule_work(&msk->work))
1072                         sock_hold(sk);
1073         }
1074 }
1075
1076 static void mptcp_retransmit_timer(struct timer_list *t)
1077 {
1078         struct inet_connection_sock *icsk = from_timer(icsk, t,
1079                                                        icsk_retransmit_timer);
1080         struct sock *sk = &icsk->icsk_inet.sk;
1081
1082         bh_lock_sock(sk);
1083         if (!sock_owned_by_user(sk)) {
1084                 mptcp_retransmit_handler(sk);
1085         } else {
1086                 /* delegate our work to tcp_release_cb() */
1087                 if (!test_and_set_bit(TCP_WRITE_TIMER_DEFERRED,
1088                                       &sk->sk_tsq_flags))
1089                         sock_hold(sk);
1090         }
1091         bh_unlock_sock(sk);
1092         sock_put(sk);
1093 }
1094
1095 /* Find an idle subflow.  Return NULL if there is unacked data at tcp
1096  * level.
1097  *
1098  * A backup subflow is returned only if that is the only kind available.
1099  */
1100 static struct sock *mptcp_subflow_get_retrans(const struct mptcp_sock *msk)
1101 {
1102         struct mptcp_subflow_context *subflow;
1103         struct sock *backup = NULL;
1104
1105         sock_owned_by_me((const struct sock *)msk);
1106
1107         mptcp_for_each_subflow(msk, subflow) {
1108                 struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
1109
1110                 /* still data outstanding at TCP level?  Don't retransmit. */
1111                 if (!tcp_write_queue_empty(ssk))
1112                         return NULL;
1113
1114                 if (subflow->backup) {
1115                         if (!backup)
1116                                 backup = ssk;
1117                         continue;
1118                 }
1119
1120                 return ssk;
1121         }
1122
1123         return backup;
1124 }
1125
1126 /* subflow sockets can be either outgoing (connect) or incoming
1127  * (accept).
1128  *
1129  * Outgoing subflows use in-kernel sockets.
1130  * Incoming subflows do not have their own 'struct socket' allocated,
1131  * so we need to use tcp_close() after detaching them from the mptcp
1132  * parent socket.
1133  */
1134 static void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
1135                               struct mptcp_subflow_context *subflow,
1136                               long timeout)
1137 {
1138         struct socket *sock = READ_ONCE(ssk->sk_socket);
1139
1140         list_del(&subflow->node);
1141
1142         if (sock && sock != sk->sk_socket) {
1143                 /* outgoing subflow */
1144                 sock_release(sock);
1145         } else {
1146                 /* incoming subflow */
1147                 tcp_close(ssk, timeout);
1148         }
1149 }
1150
1151 static unsigned int mptcp_sync_mss(struct sock *sk, u32 pmtu)
1152 {
1153         return 0;
1154 }
1155
1156 static void mptcp_worker(struct work_struct *work)
1157 {
1158         struct mptcp_sock *msk = container_of(work, struct mptcp_sock, work);
1159         struct sock *ssk, *sk = &msk->sk.icsk_inet.sk;
1160         int orig_len, orig_offset, mss_now = 0, size_goal = 0;
1161         struct mptcp_data_frag *dfrag;
1162         u64 orig_write_seq;
1163         size_t copied = 0;
1164         struct msghdr msg;
1165         long timeo = 0;
1166
1167         lock_sock(sk);
1168         mptcp_clean_una(sk);
1169         __mptcp_flush_join_list(msk);
1170         __mptcp_move_skbs(msk);
1171
1172         if (test_and_clear_bit(MPTCP_WORK_EOF, &msk->flags))
1173                 mptcp_check_for_eof(msk);
1174
1175         if (!test_and_clear_bit(MPTCP_WORK_RTX, &msk->flags))
1176                 goto unlock;
1177
1178         dfrag = mptcp_rtx_head(sk);
1179         if (!dfrag)
1180                 goto unlock;
1181
1182         if (!mptcp_ext_cache_refill(msk))
1183                 goto reset_unlock;
1184
1185         ssk = mptcp_subflow_get_retrans(msk);
1186         if (!ssk)
1187                 goto reset_unlock;
1188
1189         lock_sock(ssk);
1190
1191         msg.msg_flags = MSG_DONTWAIT;
1192         orig_len = dfrag->data_len;
1193         orig_offset = dfrag->offset;
1194         orig_write_seq = dfrag->data_seq;
1195         while (dfrag->data_len > 0) {
1196                 int ret = mptcp_sendmsg_frag(sk, ssk, &msg, dfrag, &timeo,
1197                                              &mss_now, &size_goal);
1198                 if (ret < 0)
1199                         break;
1200
1201                 MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RETRANSSEGS);
1202                 copied += ret;
1203                 dfrag->data_len -= ret;
1204                 dfrag->offset += ret;
1205
1206                 if (!mptcp_ext_cache_refill(msk))
1207                         break;
1208         }
1209         if (copied)
1210                 tcp_push(ssk, msg.msg_flags, mss_now, tcp_sk(ssk)->nonagle,
1211                          size_goal);
1212
1213         dfrag->data_seq = orig_write_seq;
1214         dfrag->offset = orig_offset;
1215         dfrag->data_len = orig_len;
1216
1217         mptcp_set_timeout(sk, ssk);
1218         release_sock(ssk);
1219
1220 reset_unlock:
1221         if (!mptcp_timer_pending(sk))
1222                 mptcp_reset_timer(sk);
1223
1224 unlock:
1225         release_sock(sk);
1226         sock_put(sk);
1227 }
1228
1229 static int __mptcp_init_sock(struct sock *sk)
1230 {
1231         struct mptcp_sock *msk = mptcp_sk(sk);
1232
1233         spin_lock_init(&msk->join_list_lock);
1234
1235         INIT_LIST_HEAD(&msk->conn_list);
1236         INIT_LIST_HEAD(&msk->join_list);
1237         INIT_LIST_HEAD(&msk->rtx_queue);
1238         __set_bit(MPTCP_SEND_SPACE, &msk->flags);
1239         INIT_WORK(&msk->work, mptcp_worker);
1240
1241         msk->first = NULL;
1242         inet_csk(sk)->icsk_sync_mss = mptcp_sync_mss;
1243
1244         mptcp_pm_data_init(msk);
1245
1246         /* re-use the csk retrans timer for MPTCP-level retrans */
1247         timer_setup(&msk->sk.icsk_retransmit_timer, mptcp_retransmit_timer, 0);
1248
1249         return 0;
1250 }
1251
1252 static int mptcp_init_sock(struct sock *sk)
1253 {
1254         struct net *net = sock_net(sk);
1255         int ret;
1256
1257         if (!mptcp_is_enabled(net))
1258                 return -ENOPROTOOPT;
1259
1260         if (unlikely(!net->mib.mptcp_statistics) && !mptcp_mib_alloc(net))
1261                 return -ENOMEM;
1262
1263         ret = __mptcp_init_sock(sk);
1264         if (ret)
1265                 return ret;
1266
1267         sk_sockets_allocated_inc(sk);
1268         sk->sk_sndbuf = sock_net(sk)->ipv4.sysctl_tcp_wmem[2];
1269
1270         return 0;
1271 }
1272
1273 static void __mptcp_clear_xmit(struct sock *sk)
1274 {
1275         struct mptcp_sock *msk = mptcp_sk(sk);
1276         struct mptcp_data_frag *dtmp, *dfrag;
1277
1278         sk_stop_timer(sk, &msk->sk.icsk_retransmit_timer);
1279
1280         list_for_each_entry_safe(dfrag, dtmp, &msk->rtx_queue, list)
1281                 dfrag_clear(sk, dfrag);
1282 }
1283
1284 static void mptcp_cancel_work(struct sock *sk)
1285 {
1286         struct mptcp_sock *msk = mptcp_sk(sk);
1287
1288         if (cancel_work_sync(&msk->work))
1289                 sock_put(sk);
1290 }
1291
1292 static void mptcp_subflow_shutdown(struct sock *ssk, int how,
1293                                    bool data_fin_tx_enable, u64 data_fin_tx_seq)
1294 {
1295         lock_sock(ssk);
1296
1297         switch (ssk->sk_state) {
1298         case TCP_LISTEN:
1299                 if (!(how & RCV_SHUTDOWN))
1300                         break;
1301                 /* fall through */
1302         case TCP_SYN_SENT:
1303                 tcp_disconnect(ssk, O_NONBLOCK);
1304                 break;
1305         default:
1306                 if (data_fin_tx_enable) {
1307                         struct mptcp_subflow_context *subflow;
1308
1309                         subflow = mptcp_subflow_ctx(ssk);
1310                         subflow->data_fin_tx_seq = data_fin_tx_seq;
1311                         subflow->data_fin_tx_enable = 1;
1312                 }
1313
1314                 ssk->sk_shutdown |= how;
1315                 tcp_shutdown(ssk, how);
1316                 break;
1317         }
1318
1319         release_sock(ssk);
1320 }
1321
1322 /* Called with msk lock held, releases such lock before returning */
1323 static void mptcp_close(struct sock *sk, long timeout)
1324 {
1325         struct mptcp_subflow_context *subflow, *tmp;
1326         struct mptcp_sock *msk = mptcp_sk(sk);
1327         LIST_HEAD(conn_list);
1328         u64 data_fin_tx_seq;
1329
1330         lock_sock(sk);
1331
1332         inet_sk_state_store(sk, TCP_CLOSE);
1333
1334         /* be sure to always acquire the join list lock, to sync vs
1335          * mptcp_finish_join().
1336          */
1337         spin_lock_bh(&msk->join_list_lock);
1338         list_splice_tail_init(&msk->join_list, &msk->conn_list);
1339         spin_unlock_bh(&msk->join_list_lock);
1340         list_splice_init(&msk->conn_list, &conn_list);
1341
1342         data_fin_tx_seq = msk->write_seq;
1343
1344         __mptcp_clear_xmit(sk);
1345
1346         release_sock(sk);
1347
1348         list_for_each_entry_safe(subflow, tmp, &conn_list, node) {
1349                 struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
1350
1351                 subflow->data_fin_tx_seq = data_fin_tx_seq;
1352                 subflow->data_fin_tx_enable = 1;
1353                 __mptcp_close_ssk(sk, ssk, subflow, timeout);
1354         }
1355
1356         mptcp_cancel_work(sk);
1357         mptcp_pm_close(msk);
1358
1359         __skb_queue_purge(&sk->sk_receive_queue);
1360
1361         sk_common_release(sk);
1362 }
1363
1364 static void mptcp_copy_inaddrs(struct sock *msk, const struct sock *ssk)
1365 {
1366 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
1367         const struct ipv6_pinfo *ssk6 = inet6_sk(ssk);
1368         struct ipv6_pinfo *msk6 = inet6_sk(msk);
1369
1370         msk->sk_v6_daddr = ssk->sk_v6_daddr;
1371         msk->sk_v6_rcv_saddr = ssk->sk_v6_rcv_saddr;
1372
1373         if (msk6 && ssk6) {
1374                 msk6->saddr = ssk6->saddr;
1375                 msk6->flow_label = ssk6->flow_label;
1376         }
1377 #endif
1378
1379         inet_sk(msk)->inet_num = inet_sk(ssk)->inet_num;
1380         inet_sk(msk)->inet_dport = inet_sk(ssk)->inet_dport;
1381         inet_sk(msk)->inet_sport = inet_sk(ssk)->inet_sport;
1382         inet_sk(msk)->inet_daddr = inet_sk(ssk)->inet_daddr;
1383         inet_sk(msk)->inet_saddr = inet_sk(ssk)->inet_saddr;
1384         inet_sk(msk)->inet_rcv_saddr = inet_sk(ssk)->inet_rcv_saddr;
1385 }
1386
1387 static int mptcp_disconnect(struct sock *sk, int flags)
1388 {
1389         /* Should never be called.
1390          * inet_stream_connect() calls ->disconnect, but that
1391          * refers to the subflow socket, not the mptcp one.
1392          */
1393         WARN_ON_ONCE(1);
1394         return 0;
1395 }
1396
1397 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
1398 static struct ipv6_pinfo *mptcp_inet6_sk(const struct sock *sk)
1399 {
1400         unsigned int offset = sizeof(struct mptcp6_sock) - sizeof(struct ipv6_pinfo);
1401
1402         return (struct ipv6_pinfo *)(((u8 *)sk) + offset);
1403 }
1404 #endif
1405
1406 struct sock *mptcp_sk_clone(const struct sock *sk,
1407                             const struct mptcp_options_received *mp_opt,
1408                             struct request_sock *req)
1409 {
1410         struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req);
1411         struct sock *nsk = sk_clone_lock(sk, GFP_ATOMIC);
1412         struct mptcp_sock *msk;
1413         u64 ack_seq;
1414
1415         if (!nsk)
1416                 return NULL;
1417
1418 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
1419         if (nsk->sk_family == AF_INET6)
1420                 inet_sk(nsk)->pinet6 = mptcp_inet6_sk(nsk);
1421 #endif
1422
1423         __mptcp_init_sock(nsk);
1424
1425         msk = mptcp_sk(nsk);
1426         msk->local_key = subflow_req->local_key;
1427         msk->token = subflow_req->token;
1428         msk->subflow = NULL;
1429
1430         msk->write_seq = subflow_req->idsn + 1;
1431         atomic64_set(&msk->snd_una, msk->write_seq);
1432         if (mp_opt->mp_capable) {
1433                 msk->can_ack = true;
1434                 msk->remote_key = mp_opt->sndr_key;
1435                 mptcp_crypto_key_sha(msk->remote_key, NULL, &ack_seq);
1436                 ack_seq++;
1437                 msk->ack_seq = ack_seq;
1438         }
1439
1440         sock_reset_flag(nsk, SOCK_RCU_FREE);
1441         /* will be fully established after successful MPC subflow creation */
1442         inet_sk_state_store(nsk, TCP_SYN_RECV);
1443         bh_unlock_sock(nsk);
1444
1445         /* keep a single reference */
1446         __sock_put(nsk);
1447         return nsk;
1448 }
1449
1450 static struct sock *mptcp_accept(struct sock *sk, int flags, int *err,
1451                                  bool kern)
1452 {
1453         struct mptcp_sock *msk = mptcp_sk(sk);
1454         struct socket *listener;
1455         struct sock *newsk;
1456
1457         listener = __mptcp_nmpc_socket(msk);
1458         if (WARN_ON_ONCE(!listener)) {
1459                 *err = -EINVAL;
1460                 return NULL;
1461         }
1462
1463         pr_debug("msk=%p, listener=%p", msk, mptcp_subflow_ctx(listener->sk));
1464         newsk = inet_csk_accept(listener->sk, flags, err, kern);
1465         if (!newsk)
1466                 return NULL;
1467
1468         pr_debug("msk=%p, subflow is mptcp=%d", msk, sk_is_mptcp(newsk));
1469
1470         if (sk_is_mptcp(newsk)) {
1471                 struct mptcp_subflow_context *subflow;
1472                 struct sock *new_mptcp_sock;
1473                 struct sock *ssk = newsk;
1474
1475                 subflow = mptcp_subflow_ctx(newsk);
1476                 new_mptcp_sock = subflow->conn;
1477
1478                 /* is_mptcp should be false if subflow->conn is missing, see
1479                  * subflow_syn_recv_sock()
1480                  */
1481                 if (WARN_ON_ONCE(!new_mptcp_sock)) {
1482                         tcp_sk(newsk)->is_mptcp = 0;
1483                         return newsk;
1484                 }
1485
1486                 /* acquire the 2nd reference for the owning socket */
1487                 sock_hold(new_mptcp_sock);
1488
1489                 local_bh_disable();
1490                 bh_lock_sock(new_mptcp_sock);
1491                 msk = mptcp_sk(new_mptcp_sock);
1492                 msk->first = newsk;
1493
1494                 newsk = new_mptcp_sock;
1495                 mptcp_copy_inaddrs(newsk, ssk);
1496                 list_add(&subflow->node, &msk->conn_list);
1497                 inet_sk_state_store(newsk, TCP_ESTABLISHED);
1498
1499                 bh_unlock_sock(new_mptcp_sock);
1500
1501                 __MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPCAPABLEPASSIVEACK);
1502                 local_bh_enable();
1503         } else {
1504                 MPTCP_INC_STATS(sock_net(sk),
1505                                 MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK);
1506         }
1507
1508         return newsk;
1509 }
1510
1511 static void mptcp_destroy(struct sock *sk)
1512 {
1513         struct mptcp_sock *msk = mptcp_sk(sk);
1514
1515         mptcp_token_destroy(msk);
1516         if (msk->cached_ext)
1517                 __skb_ext_put(msk->cached_ext);
1518
1519         sk_sockets_allocated_dec(sk);
1520 }
1521
1522 static int mptcp_setsockopt(struct sock *sk, int level, int optname,
1523                             char __user *optval, unsigned int optlen)
1524 {
1525         struct mptcp_sock *msk = mptcp_sk(sk);
1526         struct socket *ssock;
1527
1528         pr_debug("msk=%p", msk);
1529
1530         /* @@ the meaning of setsockopt() when the socket is connected and
1531          * there are multiple subflows is not yet defined. It is up to the
1532          * MPTCP-level socket to configure the subflows until the subflow
1533          * is in TCP fallback, when TCP socket options are passed through
1534          * to the one remaining subflow.
1535          */
1536         lock_sock(sk);
1537         ssock = __mptcp_tcp_fallback(msk);
1538         release_sock(sk);
1539         if (ssock)
1540                 return tcp_setsockopt(ssock->sk, level, optname, optval,
1541                                       optlen);
1542
1543         return -EOPNOTSUPP;
1544 }
1545
1546 static int mptcp_getsockopt(struct sock *sk, int level, int optname,
1547                             char __user *optval, int __user *option)
1548 {
1549         struct mptcp_sock *msk = mptcp_sk(sk);
1550         struct socket *ssock;
1551
1552         pr_debug("msk=%p", msk);
1553
1554         /* @@ the meaning of setsockopt() when the socket is connected and
1555          * there are multiple subflows is not yet defined. It is up to the
1556          * MPTCP-level socket to configure the subflows until the subflow
1557          * is in TCP fallback, when socket options are passed through
1558          * to the one remaining subflow.
1559          */
1560         lock_sock(sk);
1561         ssock = __mptcp_tcp_fallback(msk);
1562         release_sock(sk);
1563         if (ssock)
1564                 return tcp_getsockopt(ssock->sk, level, optname, optval,
1565                                       option);
1566
1567         return -EOPNOTSUPP;
1568 }
1569
1570 #define MPTCP_DEFERRED_ALL (TCPF_DELACK_TIMER_DEFERRED | \
1571                             TCPF_WRITE_TIMER_DEFERRED)
1572
1573 /* this is very alike tcp_release_cb() but we must handle differently a
1574  * different set of events
1575  */
1576 static void mptcp_release_cb(struct sock *sk)
1577 {
1578         unsigned long flags, nflags;
1579
1580         do {
1581                 flags = sk->sk_tsq_flags;
1582                 if (!(flags & MPTCP_DEFERRED_ALL))
1583                         return;
1584                 nflags = flags & ~MPTCP_DEFERRED_ALL;
1585         } while (cmpxchg(&sk->sk_tsq_flags, flags, nflags) != flags);
1586
1587         sock_release_ownership(sk);
1588
1589         if (flags & TCPF_DELACK_TIMER_DEFERRED) {
1590                 struct mptcp_sock *msk = mptcp_sk(sk);
1591                 struct sock *ssk;
1592
1593                 ssk = mptcp_subflow_recv_lookup(msk);
1594                 if (!ssk || !schedule_work(&msk->work))
1595                         __sock_put(sk);
1596         }
1597
1598         if (flags & TCPF_WRITE_TIMER_DEFERRED) {
1599                 mptcp_retransmit_handler(sk);
1600                 __sock_put(sk);
1601         }
1602 }
1603
1604 static int mptcp_hash(struct sock *sk)
1605 {
1606         /* should never be called,
1607          * we hash the TCP subflows not the master socket
1608          */
1609         WARN_ON_ONCE(1);
1610         return 0;
1611 }
1612
1613 static void mptcp_unhash(struct sock *sk)
1614 {
1615         /* called from sk_common_release(), but nothing to do here */
1616 }
1617
1618 static int mptcp_get_port(struct sock *sk, unsigned short snum)
1619 {
1620         struct mptcp_sock *msk = mptcp_sk(sk);
1621         struct socket *ssock;
1622
1623         ssock = __mptcp_nmpc_socket(msk);
1624         pr_debug("msk=%p, subflow=%p", msk, ssock);
1625         if (WARN_ON_ONCE(!ssock))
1626                 return -EINVAL;
1627
1628         return inet_csk_get_port(ssock->sk, snum);
1629 }
1630
1631 void mptcp_finish_connect(struct sock *ssk)
1632 {
1633         struct mptcp_subflow_context *subflow;
1634         struct mptcp_sock *msk;
1635         struct sock *sk;
1636         u64 ack_seq;
1637
1638         subflow = mptcp_subflow_ctx(ssk);
1639         sk = subflow->conn;
1640         msk = mptcp_sk(sk);
1641
1642         pr_debug("msk=%p, token=%u", sk, subflow->token);
1643
1644         mptcp_crypto_key_sha(subflow->remote_key, NULL, &ack_seq);
1645         ack_seq++;
1646         subflow->map_seq = ack_seq;
1647         subflow->map_subflow_seq = 1;
1648         subflow->rel_write_seq = 1;
1649
1650         /* the socket is not connected yet, no msk/subflow ops can access/race
1651          * accessing the field below
1652          */
1653         WRITE_ONCE(msk->remote_key, subflow->remote_key);
1654         WRITE_ONCE(msk->local_key, subflow->local_key);
1655         WRITE_ONCE(msk->write_seq, subflow->idsn + 1);
1656         WRITE_ONCE(msk->ack_seq, ack_seq);
1657         WRITE_ONCE(msk->can_ack, 1);
1658         atomic64_set(&msk->snd_una, msk->write_seq);
1659
1660         mptcp_pm_new_connection(msk, 0);
1661 }
1662
1663 static void mptcp_sock_graft(struct sock *sk, struct socket *parent)
1664 {
1665         write_lock_bh(&sk->sk_callback_lock);
1666         rcu_assign_pointer(sk->sk_wq, &parent->wq);
1667         sk_set_socket(sk, parent);
1668         sk->sk_uid = SOCK_INODE(parent)->i_uid;
1669         write_unlock_bh(&sk->sk_callback_lock);
1670 }
1671
1672 bool mptcp_finish_join(struct sock *sk)
1673 {
1674         struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
1675         struct mptcp_sock *msk = mptcp_sk(subflow->conn);
1676         struct sock *parent = (void *)msk;
1677         struct socket *parent_sock;
1678         bool ret;
1679
1680         pr_debug("msk=%p, subflow=%p", msk, subflow);
1681
1682         /* mptcp socket already closing? */
1683         if (inet_sk_state_load(parent) != TCP_ESTABLISHED)
1684                 return false;
1685
1686         if (!msk->pm.server_side)
1687                 return true;
1688
1689         if (!mptcp_pm_allow_new_subflow(msk))
1690                 return false;
1691
1692         /* active connections are already on conn_list, and we can't acquire
1693          * msk lock here.
1694          * use the join list lock as synchronization point and double-check
1695          * msk status to avoid racing with mptcp_close()
1696          */
1697         spin_lock_bh(&msk->join_list_lock);
1698         ret = inet_sk_state_load(parent) == TCP_ESTABLISHED;
1699         if (ret && !WARN_ON_ONCE(!list_empty(&subflow->node)))
1700                 list_add_tail(&subflow->node, &msk->join_list);
1701         spin_unlock_bh(&msk->join_list_lock);
1702         if (!ret)
1703                 return false;
1704
1705         /* attach to msk socket only after we are sure he will deal with us
1706          * at close time
1707          */
1708         parent_sock = READ_ONCE(parent->sk_socket);
1709         if (parent_sock && !sk->sk_socket)
1710                 mptcp_sock_graft(sk, parent_sock);
1711         subflow->map_seq = msk->ack_seq;
1712         return true;
1713 }
1714
1715 static bool mptcp_memory_free(const struct sock *sk, int wake)
1716 {
1717         struct mptcp_sock *msk = mptcp_sk(sk);
1718
1719         return wake ? test_bit(MPTCP_SEND_SPACE, &msk->flags) : true;
1720 }
1721
1722 static struct proto mptcp_prot = {
1723         .name           = "MPTCP",
1724         .owner          = THIS_MODULE,
1725         .init           = mptcp_init_sock,
1726         .disconnect     = mptcp_disconnect,
1727         .close          = mptcp_close,
1728         .accept         = mptcp_accept,
1729         .setsockopt     = mptcp_setsockopt,
1730         .getsockopt     = mptcp_getsockopt,
1731         .shutdown       = tcp_shutdown,
1732         .destroy        = mptcp_destroy,
1733         .sendmsg        = mptcp_sendmsg,
1734         .recvmsg        = mptcp_recvmsg,
1735         .release_cb     = mptcp_release_cb,
1736         .hash           = mptcp_hash,
1737         .unhash         = mptcp_unhash,
1738         .get_port       = mptcp_get_port,
1739         .sockets_allocated      = &mptcp_sockets_allocated,
1740         .memory_allocated       = &tcp_memory_allocated,
1741         .memory_pressure        = &tcp_memory_pressure,
1742         .stream_memory_free     = mptcp_memory_free,
1743         .sysctl_wmem_offset     = offsetof(struct net, ipv4.sysctl_tcp_wmem),
1744         .sysctl_mem     = sysctl_tcp_mem,
1745         .obj_size       = sizeof(struct mptcp_sock),
1746         .slab_flags     = SLAB_TYPESAFE_BY_RCU,
1747         .no_autobind    = true,
1748 };
1749
1750 static int mptcp_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
1751 {
1752         struct mptcp_sock *msk = mptcp_sk(sock->sk);
1753         struct socket *ssock;
1754         int err;
1755
1756         lock_sock(sock->sk);
1757         ssock = __mptcp_socket_create(msk, MPTCP_SAME_STATE);
1758         if (IS_ERR(ssock)) {
1759                 err = PTR_ERR(ssock);
1760                 goto unlock;
1761         }
1762
1763         err = ssock->ops->bind(ssock, uaddr, addr_len);
1764         if (!err)
1765                 mptcp_copy_inaddrs(sock->sk, ssock->sk);
1766
1767 unlock:
1768         release_sock(sock->sk);
1769         return err;
1770 }
1771
1772 static int mptcp_stream_connect(struct socket *sock, struct sockaddr *uaddr,
1773                                 int addr_len, int flags)
1774 {
1775         struct mptcp_sock *msk = mptcp_sk(sock->sk);
1776         struct mptcp_subflow_context *subflow;
1777         struct socket *ssock;
1778         int err;
1779
1780         lock_sock(sock->sk);
1781         if (sock->state != SS_UNCONNECTED && msk->subflow) {
1782                 /* pending connection or invalid state, let existing subflow
1783                  * cope with that
1784                  */
1785                 ssock = msk->subflow;
1786                 goto do_connect;
1787         }
1788
1789         mptcp_token_destroy(msk);
1790         ssock = __mptcp_socket_create(msk, TCP_SYN_SENT);
1791         if (IS_ERR(ssock)) {
1792                 err = PTR_ERR(ssock);
1793                 goto unlock;
1794         }
1795
1796         subflow = mptcp_subflow_ctx(ssock->sk);
1797 #ifdef CONFIG_TCP_MD5SIG
1798         /* no MPTCP if MD5SIG is enabled on this socket or we may run out of
1799          * TCP option space.
1800          */
1801         if (rcu_access_pointer(tcp_sk(ssock->sk)->md5sig_info))
1802                 subflow->request_mptcp = 0;
1803 #endif
1804         if (subflow->request_mptcp && mptcp_token_new_connect(ssock->sk))
1805                 subflow->request_mptcp = 0;
1806
1807 do_connect:
1808         err = ssock->ops->connect(ssock, uaddr, addr_len, flags);
1809         sock->state = ssock->state;
1810
1811         /* on successful connect, the msk state will be moved to established by
1812          * subflow_finish_connect()
1813          */
1814         if (!err || err == EINPROGRESS)
1815                 mptcp_copy_inaddrs(sock->sk, ssock->sk);
1816         else
1817                 inet_sk_state_store(sock->sk, inet_sk_state_load(ssock->sk));
1818
1819 unlock:
1820         release_sock(sock->sk);
1821         return err;
1822 }
1823
1824 static int mptcp_v4_getname(struct socket *sock, struct sockaddr *uaddr,
1825                             int peer)
1826 {
1827         if (sock->sk->sk_prot == &tcp_prot) {
1828                 /* we are being invoked from __sys_accept4, after
1829                  * mptcp_accept() has just accepted a non-mp-capable
1830                  * flow: sk is a tcp_sk, not an mptcp one.
1831                  *
1832                  * Hand the socket over to tcp so all further socket ops
1833                  * bypass mptcp.
1834                  */
1835                 sock->ops = &inet_stream_ops;
1836         }
1837
1838         return inet_getname(sock, uaddr, peer);
1839 }
1840
1841 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
1842 static int mptcp_v6_getname(struct socket *sock, struct sockaddr *uaddr,
1843                             int peer)
1844 {
1845         if (sock->sk->sk_prot == &tcpv6_prot) {
1846                 /* we are being invoked from __sys_accept4 after
1847                  * mptcp_accept() has accepted a non-mp-capable
1848                  * subflow: sk is a tcp_sk, not mptcp.
1849                  *
1850                  * Hand the socket over to tcp so all further
1851                  * socket ops bypass mptcp.
1852                  */
1853                 sock->ops = &inet6_stream_ops;
1854         }
1855
1856         return inet6_getname(sock, uaddr, peer);
1857 }
1858 #endif
1859
1860 static int mptcp_listen(struct socket *sock, int backlog)
1861 {
1862         struct mptcp_sock *msk = mptcp_sk(sock->sk);
1863         struct socket *ssock;
1864         int err;
1865
1866         pr_debug("msk=%p", msk);
1867
1868         lock_sock(sock->sk);
1869         mptcp_token_destroy(msk);
1870         ssock = __mptcp_socket_create(msk, TCP_LISTEN);
1871         if (IS_ERR(ssock)) {
1872                 err = PTR_ERR(ssock);
1873                 goto unlock;
1874         }
1875
1876         sock_set_flag(sock->sk, SOCK_RCU_FREE);
1877
1878         err = ssock->ops->listen(ssock, backlog);
1879         inet_sk_state_store(sock->sk, inet_sk_state_load(ssock->sk));
1880         if (!err)
1881                 mptcp_copy_inaddrs(sock->sk, ssock->sk);
1882
1883 unlock:
1884         release_sock(sock->sk);
1885         return err;
1886 }
1887
1888 static bool is_tcp_proto(const struct proto *p)
1889 {
1890 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
1891         return p == &tcp_prot || p == &tcpv6_prot;
1892 #else
1893         return p == &tcp_prot;
1894 #endif
1895 }
1896
1897 static int mptcp_stream_accept(struct socket *sock, struct socket *newsock,
1898                                int flags, bool kern)
1899 {
1900         struct mptcp_sock *msk = mptcp_sk(sock->sk);
1901         struct socket *ssock;
1902         int err;
1903
1904         pr_debug("msk=%p", msk);
1905
1906         lock_sock(sock->sk);
1907         if (sock->sk->sk_state != TCP_LISTEN)
1908                 goto unlock_fail;
1909
1910         ssock = __mptcp_nmpc_socket(msk);
1911         if (!ssock)
1912                 goto unlock_fail;
1913
1914         sock_hold(ssock->sk);
1915         release_sock(sock->sk);
1916
1917         err = ssock->ops->accept(sock, newsock, flags, kern);
1918         if (err == 0 && !is_tcp_proto(newsock->sk->sk_prot)) {
1919                 struct mptcp_sock *msk = mptcp_sk(newsock->sk);
1920                 struct mptcp_subflow_context *subflow;
1921
1922                 /* set ssk->sk_socket of accept()ed flows to mptcp socket.
1923                  * This is needed so NOSPACE flag can be set from tcp stack.
1924                  */
1925                 __mptcp_flush_join_list(msk);
1926                 list_for_each_entry(subflow, &msk->conn_list, node) {
1927                         struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
1928
1929                         if (!ssk->sk_socket)
1930                                 mptcp_sock_graft(ssk, newsock);
1931                 }
1932         }
1933
1934         sock_put(ssock->sk);
1935         return err;
1936
1937 unlock_fail:
1938         release_sock(sock->sk);
1939         return -EINVAL;
1940 }
1941
1942 static __poll_t mptcp_poll(struct file *file, struct socket *sock,
1943                            struct poll_table_struct *wait)
1944 {
1945         struct sock *sk = sock->sk;
1946         struct mptcp_sock *msk;
1947         __poll_t mask = 0;
1948
1949         msk = mptcp_sk(sk);
1950         sock_poll_wait(file, sock, wait);
1951
1952         if (test_bit(MPTCP_DATA_READY, &msk->flags))
1953                 mask = EPOLLIN | EPOLLRDNORM;
1954         if (sk_stream_is_writeable(sk) &&
1955             test_bit(MPTCP_SEND_SPACE, &msk->flags))
1956                 mask |= EPOLLOUT | EPOLLWRNORM;
1957         if (sk->sk_shutdown & RCV_SHUTDOWN)
1958                 mask |= EPOLLIN | EPOLLRDNORM | EPOLLRDHUP;
1959
1960         return mask;
1961 }
1962
1963 static int mptcp_shutdown(struct socket *sock, int how)
1964 {
1965         struct mptcp_sock *msk = mptcp_sk(sock->sk);
1966         struct mptcp_subflow_context *subflow;
1967         int ret = 0;
1968
1969         pr_debug("sk=%p, how=%d", msk, how);
1970
1971         lock_sock(sock->sk);
1972         if (how == SHUT_WR || how == SHUT_RDWR)
1973                 inet_sk_state_store(sock->sk, TCP_FIN_WAIT1);
1974
1975         how++;
1976
1977         if ((how & ~SHUTDOWN_MASK) || !how) {
1978                 ret = -EINVAL;
1979                 goto out_unlock;
1980         }
1981
1982         if (sock->state == SS_CONNECTING) {
1983                 if ((1 << sock->sk->sk_state) &
1984                     (TCPF_SYN_SENT | TCPF_SYN_RECV | TCPF_CLOSE))
1985                         sock->state = SS_DISCONNECTING;
1986                 else
1987                         sock->state = SS_CONNECTED;
1988         }
1989
1990         __mptcp_flush_join_list(msk);
1991         mptcp_for_each_subflow(msk, subflow) {
1992                 struct sock *tcp_sk = mptcp_subflow_tcp_sock(subflow);
1993
1994                 mptcp_subflow_shutdown(tcp_sk, how, 1, msk->write_seq);
1995         }
1996
1997         /* Wake up anyone sleeping in poll. */
1998         sock->sk->sk_state_change(sock->sk);
1999
2000 out_unlock:
2001         release_sock(sock->sk);
2002
2003         return ret;
2004 }
2005
2006 static const struct proto_ops mptcp_stream_ops = {
2007         .family            = PF_INET,
2008         .owner             = THIS_MODULE,
2009         .release           = inet_release,
2010         .bind              = mptcp_bind,
2011         .connect           = mptcp_stream_connect,
2012         .socketpair        = sock_no_socketpair,
2013         .accept            = mptcp_stream_accept,
2014         .getname           = mptcp_v4_getname,
2015         .poll              = mptcp_poll,
2016         .ioctl             = inet_ioctl,
2017         .gettstamp         = sock_gettstamp,
2018         .listen            = mptcp_listen,
2019         .shutdown          = mptcp_shutdown,
2020         .setsockopt        = sock_common_setsockopt,
2021         .getsockopt        = sock_common_getsockopt,
2022         .sendmsg           = inet_sendmsg,
2023         .recvmsg           = inet_recvmsg,
2024         .mmap              = sock_no_mmap,
2025         .sendpage          = inet_sendpage,
2026 #ifdef CONFIG_COMPAT
2027         .compat_setsockopt = compat_sock_common_setsockopt,
2028         .compat_getsockopt = compat_sock_common_getsockopt,
2029 #endif
2030 };
2031
2032 static struct inet_protosw mptcp_protosw = {
2033         .type           = SOCK_STREAM,
2034         .protocol       = IPPROTO_MPTCP,
2035         .prot           = &mptcp_prot,
2036         .ops            = &mptcp_stream_ops,
2037         .flags          = INET_PROTOSW_ICSK,
2038 };
2039
2040 void __init mptcp_proto_init(void)
2041 {
2042         mptcp_prot.h.hashinfo = tcp_prot.h.hashinfo;
2043
2044         if (percpu_counter_init(&mptcp_sockets_allocated, 0, GFP_KERNEL))
2045                 panic("Failed to allocate MPTCP pcpu counter\n");
2046
2047         mptcp_subflow_init();
2048         mptcp_pm_init();
2049         mptcp_token_init();
2050
2051         if (proto_register(&mptcp_prot, 1) != 0)
2052                 panic("Failed to register MPTCP proto.\n");
2053
2054         inet_register_protosw(&mptcp_protosw);
2055
2056         BUILD_BUG_ON(sizeof(struct mptcp_skb_cb) > sizeof_field(struct sk_buff, cb));
2057 }
2058
2059 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
2060 static const struct proto_ops mptcp_v6_stream_ops = {
2061         .family            = PF_INET6,
2062         .owner             = THIS_MODULE,
2063         .release           = inet6_release,
2064         .bind              = mptcp_bind,
2065         .connect           = mptcp_stream_connect,
2066         .socketpair        = sock_no_socketpair,
2067         .accept            = mptcp_stream_accept,
2068         .getname           = mptcp_v6_getname,
2069         .poll              = mptcp_poll,
2070         .ioctl             = inet6_ioctl,
2071         .gettstamp         = sock_gettstamp,
2072         .listen            = mptcp_listen,
2073         .shutdown          = mptcp_shutdown,
2074         .setsockopt        = sock_common_setsockopt,
2075         .getsockopt        = sock_common_getsockopt,
2076         .sendmsg           = inet6_sendmsg,
2077         .recvmsg           = inet6_recvmsg,
2078         .mmap              = sock_no_mmap,
2079         .sendpage          = inet_sendpage,
2080 #ifdef CONFIG_COMPAT
2081         .compat_ioctl      = inet6_compat_ioctl,
2082         .compat_setsockopt = compat_sock_common_setsockopt,
2083         .compat_getsockopt = compat_sock_common_getsockopt,
2084 #endif
2085 };
2086
2087 static struct proto mptcp_v6_prot;
2088
2089 static void mptcp_v6_destroy(struct sock *sk)
2090 {
2091         mptcp_destroy(sk);
2092         inet6_destroy_sock(sk);
2093 }
2094
2095 static struct inet_protosw mptcp_v6_protosw = {
2096         .type           = SOCK_STREAM,
2097         .protocol       = IPPROTO_MPTCP,
2098         .prot           = &mptcp_v6_prot,
2099         .ops            = &mptcp_v6_stream_ops,
2100         .flags          = INET_PROTOSW_ICSK,
2101 };
2102
2103 int __init mptcp_proto_v6_init(void)
2104 {
2105         int err;
2106
2107         mptcp_v6_prot = mptcp_prot;
2108         strcpy(mptcp_v6_prot.name, "MPTCPv6");
2109         mptcp_v6_prot.slab = NULL;
2110         mptcp_v6_prot.destroy = mptcp_v6_destroy;
2111         mptcp_v6_prot.obj_size = sizeof(struct mptcp6_sock);
2112
2113         err = proto_register(&mptcp_v6_prot, 1);
2114         if (err)
2115                 return err;
2116
2117         err = inet6_register_protosw(&mptcp_v6_protosw);
2118         if (err)
2119                 proto_unregister(&mptcp_v6_prot);
2120
2121         return err;
2122 }
2123 #endif