Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -1301,8 +1301,9 @@ static int __sctp_setsockopt_connectx(struct sock *sk,
|
||||
int addrs_size,
|
||||
sctp_assoc_t *assoc_id)
|
||||
{
|
||||
int err = 0;
|
||||
struct sockaddr *kaddrs;
|
||||
gfp_t gfp = GFP_KERNEL;
|
||||
int err = 0;
|
||||
|
||||
pr_debug("%s: sk:%p addrs:%p addrs_size:%d\n",
|
||||
__func__, sk, addrs, addrs_size);
|
||||
@@ -1315,7 +1316,9 @@ static int __sctp_setsockopt_connectx(struct sock *sk,
|
||||
return -EFAULT;
|
||||
|
||||
/* Alloc space for the address array in kernel memory. */
|
||||
kaddrs = kmalloc(addrs_size, GFP_KERNEL);
|
||||
if (sk->sk_socket->file)
|
||||
gfp = GFP_USER | __GFP_NOWARN;
|
||||
kaddrs = kmalloc(addrs_size, gfp);
|
||||
if (unlikely(!kaddrs))
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1513,8 +1516,7 @@ static void sctp_close(struct sock *sk, long timeout)
|
||||
struct sctp_chunk *chunk;
|
||||
|
||||
chunk = sctp_make_abort_user(asoc, NULL, 0);
|
||||
if (chunk)
|
||||
sctp_primitive_ABORT(net, asoc, chunk);
|
||||
sctp_primitive_ABORT(net, asoc, chunk);
|
||||
} else
|
||||
sctp_primitive_SHUTDOWN(net, asoc, NULL);
|
||||
}
|
||||
@@ -5773,7 +5775,7 @@ static int sctp_getsockopt_assoc_ids(struct sock *sk, int len,
|
||||
|
||||
len = sizeof(struct sctp_assoc_ids) + sizeof(sctp_assoc_t) * num;
|
||||
|
||||
ids = kmalloc(len, GFP_KERNEL);
|
||||
ids = kmalloc(len, GFP_USER | __GFP_NOWARN);
|
||||
if (unlikely(!ids))
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -7199,6 +7201,8 @@ void sctp_copy_sock(struct sock *newsk, struct sock *sk,
|
||||
|
||||
if (newsk->sk_flags & SK_FLAGS_TIMESTAMP)
|
||||
net_enable_timestamp();
|
||||
|
||||
security_sk_clone(sk, newsk);
|
||||
}
|
||||
|
||||
static inline void sctp_copy_descendant(struct sock *sk_to,
|
||||
|
||||
Reference in New Issue
Block a user