uipc_syscalls.c (176498) | uipc_syscalls.c (177599) |
---|---|
1/*- 2 * Copyright (c) 1982, 1986, 1989, 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * sendfile(2) and related extensions: 6 * Copyright (c) 1998, David Greenman. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 19 unchanged lines hidden (view full) --- 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * 32 * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94 33 */ 34 35#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1982, 1986, 1989, 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * sendfile(2) and related extensions: 6 * Copyright (c) 1998, David Greenman. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 19 unchanged lines hidden (view full) --- 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * 32 * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94 33 */ 34 35#include <sys/cdefs.h> |
36__FBSDID("$FreeBSD: head/sys/kern/uipc_syscalls.c 176498 2008-02-24 00:07:00Z cperciva $"); | 36__FBSDID("$FreeBSD: head/sys/kern/uipc_syscalls.c 177599 2008-03-25 09:39:02Z ru $"); |
37 38#include "opt_sctp.h" 39#include "opt_compat.h" 40#include "opt_ktrace.h" 41#include "opt_mac.h" 42 43#include <sys/param.h> 44#include <sys/systm.h> --- 655 unchanged lines hidden (view full) --- 700 error = sockargs(&control, mp->msg_control, 701 mp->msg_controllen, MT_CONTROL); 702 if (error) 703 goto bad; 704#ifdef COMPAT_OLDSOCK 705 if (mp->msg_flags == MSG_COMPAT) { 706 struct cmsghdr *cm; 707 | 37 38#include "opt_sctp.h" 39#include "opt_compat.h" 40#include "opt_ktrace.h" 41#include "opt_mac.h" 42 43#include <sys/param.h> 44#include <sys/systm.h> --- 655 unchanged lines hidden (view full) --- 700 error = sockargs(&control, mp->msg_control, 701 mp->msg_controllen, MT_CONTROL); 702 if (error) 703 goto bad; 704#ifdef COMPAT_OLDSOCK 705 if (mp->msg_flags == MSG_COMPAT) { 706 struct cmsghdr *cm; 707 |
708 M_PREPEND(control, sizeof(*cm), M_TRYWAIT); 709 if (control == 0) { 710 error = ENOBUFS; 711 goto bad; 712 } else { 713 cm = mtod(control, struct cmsghdr *); 714 cm->cmsg_len = control->m_len; 715 cm->cmsg_level = SOL_SOCKET; 716 cm->cmsg_type = SCM_RIGHTS; 717 } | 708 M_PREPEND(control, sizeof(*cm), M_WAIT); 709 cm = mtod(control, struct cmsghdr *); 710 cm->cmsg_len = control->m_len; 711 cm->cmsg_level = SOL_SOCKET; 712 cm->cmsg_type = SCM_RIGHTS; |
718 } 719#endif 720 } else { 721 control = NULL; 722 } 723 724 error = kern_sendit(td, s, mp, flags, control, UIO_USERSPACE); 725 --- 896 unchanged lines hidden (view full) --- 1622#ifdef COMPAT_OLDSOCK 1623 if (type == MT_SONAME && (u_int)buflen <= 112) 1624 buflen = MLEN; /* unix domain compat. hack */ 1625 else 1626#endif 1627 if ((u_int)buflen > MCLBYTES) 1628 return (EINVAL); 1629 } | 713 } 714#endif 715 } else { 716 control = NULL; 717 } 718 719 error = kern_sendit(td, s, mp, flags, control, UIO_USERSPACE); 720 --- 896 unchanged lines hidden (view full) --- 1617#ifdef COMPAT_OLDSOCK 1618 if (type == MT_SONAME && (u_int)buflen <= 112) 1619 buflen = MLEN; /* unix domain compat. hack */ 1620 else 1621#endif 1622 if ((u_int)buflen > MCLBYTES) 1623 return (EINVAL); 1624 } |
1630 m = m_get(M_TRYWAIT, type); 1631 if (m == NULL) 1632 return (ENOBUFS); 1633 if ((u_int)buflen > MLEN) { 1634 MCLGET(m, M_TRYWAIT); 1635 if ((m->m_flags & M_EXT) == 0) { 1636 m_free(m); 1637 return (ENOBUFS); 1638 } 1639 } | 1625 m = m_get(M_WAIT, type); 1626 if ((u_int)buflen > MLEN) 1627 MCLGET(m, M_WAIT); |
1640 m->m_len = buflen; 1641 error = copyin(buf, mtod(m, caddr_t), (u_int)buflen); 1642 if (error) 1643 (void) m_free(m); 1644 else { 1645 *mp = m; 1646 if (type == MT_SONAME) { 1647 sa = mtod(m, struct sockaddr *); --- 1069 unchanged lines hidden --- | 1628 m->m_len = buflen; 1629 error = copyin(buf, mtod(m, caddr_t), (u_int)buflen); 1630 if (error) 1631 (void) m_free(m); 1632 else { 1633 *mp = m; 1634 if (type == MT_SONAME) { 1635 sa = mtod(m, struct sockaddr *); --- 1069 unchanged lines hidden --- |