diff options
Diffstat (limited to 'net/core/sock.c')
| -rw-r--r-- | net/core/sock.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 08bf97eceeb3..25dab8b60223 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -452,11 +452,12 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)  }  EXPORT_SYMBOL(sock_queue_rcv_skb); -int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested) +int __sk_receive_skb(struct sock *sk, struct sk_buff *skb, +		     const int nested, unsigned int trim_cap)  {  	int rc = NET_RX_SUCCESS; -	if (sk_filter(sk, skb)) +	if (sk_filter_trim_cap(sk, skb, trim_cap))  		goto discard_and_relse;  	skb->dev = NULL; @@ -492,7 +493,7 @@ discard_and_relse:  	kfree_skb(skb);  	goto out;  } -EXPORT_SYMBOL(sk_receive_skb); +EXPORT_SYMBOL(__sk_receive_skb);  struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)  { @@ -1938,6 +1939,10 @@ int __sock_cmsg_send(struct sock *sk, struct msghdr *msg, struct cmsghdr *cmsg,  		sockc->tsflags &= ~SOF_TIMESTAMPING_TX_RECORD_MASK;  		sockc->tsflags |= tsflags;  		break; +	/* SCM_RIGHTS and SCM_CREDENTIALS are semantically in SOL_UNIX. */ +	case SCM_RIGHTS: +	case SCM_CREDENTIALS: +		break;  	default:  		return -EINVAL;  	}  |