summaryrefslogtreecommitdiff
path: root/net/ipv4/udp.c
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2016-09-20 13:12:59 -0700
committerDmitry Shmidt <dimitrysh@google.com>2016-09-20 13:12:59 -0700
commit321249bb2f9c61fd19adead0de1e058b94108d18 (patch)
tree58beee90c04911c4bcb08da2b2a76fe7c486f485 /net/ipv4/udp.c
parenta517d900c6b4996dd6a6ba2f600dabe1c4da717a (diff)
parentb7c491d2c40fde253ec06a63b3f93ea60c0467a9 (diff)
Merge remote-tracking branch 'common/android-4.4' into android-4.4.y-merge
Change-Id: I049d2e9d238a92d56100e8e317be6688497eb501
Diffstat (limited to 'net/ipv4/udp.c')
-rw-r--r--net/ipv4/udp.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 037a29ab00f0..defc9cad1797 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -2265,6 +2265,20 @@ unsigned int udp_poll(struct file *file, struct socket *sock, poll_table *wait)
}
EXPORT_SYMBOL(udp_poll);
+int udp_abort(struct sock *sk, int err)
+{
+ lock_sock(sk);
+
+ sk->sk_err = err;
+ sk->sk_error_report(sk);
+ udp_disconnect(sk, 0);
+
+ release_sock(sk);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(udp_abort);
+
struct proto udp_prot = {
.name = "UDP",
.owner = THIS_MODULE,
@@ -2296,6 +2310,7 @@ struct proto udp_prot = {
.compat_getsockopt = compat_udp_getsockopt,
#endif
.clear_sk = sk_prot_clear_portaddr_nulls,
+ .diag_destroy = udp_abort,
};
EXPORT_SYMBOL(udp_prot);