From 9244c5bdcdec8758d9cfd838d501d91e6fd953d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= Date: Wed, 15 Sep 2010 12:30:12 +0000 Subject: [PATCH] --- yaml --- r: 214547 b: refs/heads/master c: 7417fa83c1a8b75a03bd9b9b358999f38e771eab h: refs/heads/master i: 214545: c3c84fa6b3d6ec63bd9384793305a1cab79e79a6 214543: bda5a2737a97337577b0531b5cf527d78c5b9cc5 v: v3 --- [refs] | 2 +- trunk/include/linux/phonet.h | 2 ++ trunk/net/phonet/datagram.c | 13 +++++++++++++ trunk/net/phonet/socket.c | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 5040966388a8..6b62ca6829aa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4e3d16ce5e82648d7f4dfd28b6cf8fe2e9a9efc3 +refs/heads/master: 7417fa83c1a8b75a03bd9b9b358999f38e771eab diff --git a/trunk/include/linux/phonet.h b/trunk/include/linux/phonet.h index 76edadf046d3..85e14a83283b 100644 --- a/trunk/include/linux/phonet.h +++ b/trunk/include/linux/phonet.h @@ -47,6 +47,8 @@ /* ioctls */ #define SIOCPNGETOBJECT (SIOCPROTOPRIVATE + 0) +#define SIOCPNADDRESOURCE (SIOCPROTOPRIVATE + 14) +#define SIOCPNDELRESOURCE (SIOCPROTOPRIVATE + 15) /* Phonet protocol header */ struct phonethdr { diff --git a/trunk/net/phonet/datagram.c b/trunk/net/phonet/datagram.c index 1bd38db4fe1e..2f032381bd45 100644 --- a/trunk/net/phonet/datagram.c +++ b/trunk/net/phonet/datagram.c @@ -52,6 +52,19 @@ static int pn_ioctl(struct sock *sk, int cmd, unsigned long arg) answ = skb ? skb->len : 0; release_sock(sk); return put_user(answ, (int __user *)arg); + + case SIOCPNADDRESOURCE: + case SIOCPNDELRESOURCE: { + u32 res; + if (get_user(res, (u32 __user *)arg)) + return -EFAULT; + if (res >= 256) + return -EINVAL; + if (cmd == SIOCPNADDRESOURCE) + return pn_sock_bind_res(sk, res); + else + return pn_sock_unbind_res(sk, res); + } } return -ENOIOCTLCMD; diff --git a/trunk/net/phonet/socket.c b/trunk/net/phonet/socket.c index 4c29a23e9007..d4f41afc0583 100644 --- a/trunk/net/phonet/socket.c +++ b/trunk/net/phonet/socket.c @@ -158,6 +158,7 @@ void pn_sock_unhash(struct sock *sk) spin_lock_bh(&pnsocks.lock); sk_del_node_init(sk); spin_unlock_bh(&pnsocks.lock); + pn_sock_unbind_all_res(sk); } EXPORT_SYMBOL(pn_sock_unhash);