socket.c (f869c912869edc2754355af9e10e5aaff8ff5a40) | socket.c (e0eb093e794452791b0f932a0120f410f614ad82) |
---|---|
1/* SCTP kernel implementation 2 * (C) Copyright IBM Corp. 2001, 2004 3 * Copyright (c) 1999-2000 Cisco, Inc. 4 * Copyright (c) 1999-2001 Motorola, Inc. 5 * Copyright (c) 2001-2003 Intel Corp. 6 * Copyright (c) 2001-2002 Nokia, Inc. 7 * Copyright (c) 2001 La Monte H.P. Yarroll 8 * --- 1595 unchanged lines hidden (view full) --- 1604 sctp_cmsgs_t cmsgs = { NULL }; 1605 sctp_scope_t scope; 1606 bool fill_sinfo_ttl = false; 1607 struct sctp_datamsg *datamsg; 1608 int msg_flags = msg->msg_flags; 1609 __u16 sinfo_flags = 0; 1610 long timeo; 1611 int err; | 1/* SCTP kernel implementation 2 * (C) Copyright IBM Corp. 2001, 2004 3 * Copyright (c) 1999-2000 Cisco, Inc. 4 * Copyright (c) 1999-2001 Motorola, Inc. 5 * Copyright (c) 2001-2003 Intel Corp. 6 * Copyright (c) 2001-2002 Nokia, Inc. 7 * Copyright (c) 2001 La Monte H.P. Yarroll 8 * --- 1595 unchanged lines hidden (view full) --- 1604 sctp_cmsgs_t cmsgs = { NULL }; 1605 sctp_scope_t scope; 1606 bool fill_sinfo_ttl = false; 1607 struct sctp_datamsg *datamsg; 1608 int msg_flags = msg->msg_flags; 1609 __u16 sinfo_flags = 0; 1610 long timeo; 1611 int err; |
1612 struct iov_iter from; |
|
1612 | 1613 |
1614 iov_iter_init(&from, WRITE, msg->msg_iov, msg->msg_iovlen, msg_len); 1615 |
|
1613 err = 0; 1614 sp = sctp_sk(sk); 1615 ep = sp->ep; 1616 1617 pr_debug("%s: sk:%p, msg:%p, msg_len:%zu ep:%p\n", __func__, sk, 1618 msg, msg_len, ep); 1619 1620 /* We cannot send a message over a TCP-style listening socket. */ --- 321 unchanged lines hidden (view full) --- 1942 err = sctp_primitive_ASSOCIATE(net, asoc, NULL); 1943 if (err < 0) 1944 goto out_free; 1945 1946 pr_debug("%s: we associated primitively\n", __func__); 1947 } 1948 1949 /* Break the message into multiple chunks of maximum size. */ | 1616 err = 0; 1617 sp = sctp_sk(sk); 1618 ep = sp->ep; 1619 1620 pr_debug("%s: sk:%p, msg:%p, msg_len:%zu ep:%p\n", __func__, sk, 1621 msg, msg_len, ep); 1622 1623 /* We cannot send a message over a TCP-style listening socket. */ --- 321 unchanged lines hidden (view full) --- 1945 err = sctp_primitive_ASSOCIATE(net, asoc, NULL); 1946 if (err < 0) 1947 goto out_free; 1948 1949 pr_debug("%s: we associated primitively\n", __func__); 1950 } 1951 1952 /* Break the message into multiple chunks of maximum size. */ |
1950 datamsg = sctp_datamsg_from_user(asoc, sinfo, msg, msg_len); | 1953 datamsg = sctp_datamsg_from_user(asoc, sinfo, &from); |
1951 if (IS_ERR(datamsg)) { 1952 err = PTR_ERR(datamsg); 1953 goto out_free; 1954 } 1955 1956 /* Now send the (possibly) fragmented message. */ 1957 list_for_each_entry(chunk, &datamsg->chunks, frag_list) { 1958 sctp_chunk_hold(chunk); --- 5442 unchanged lines hidden --- | 1954 if (IS_ERR(datamsg)) { 1955 err = PTR_ERR(datamsg); 1956 goto out_free; 1957 } 1958 1959 /* Now send the (possibly) fragmented message. */ 1960 list_for_each_entry(chunk, &datamsg->chunks, frag_list) { 1961 sctp_chunk_hold(chunk); --- 5442 unchanged lines hidden --- |