* [PATCH] TIPC Protocol: Convert tsock->sem in a mutex
@ 2008-03-02 18:36 Matthias Kaehlcke
2008-03-02 22:16 ` [tipc-discussion] " Florian Westphal
2008-03-04 7:37 ` David Miller
0 siblings, 2 replies; 3+ messages in thread
From: Matthias Kaehlcke @ 2008-03-02 18:36 UTC (permalink / raw)
To: per.liden, jon.maloy, allan.stephens, tipc-discussion; +Cc: linux-kernel, akpm
TIPC Protocol: The semaphore tsock->sem is used as mutex, convert it
to the mutex API
Signed-off-by: Matthias Kaehlcke <matthias@kaehlcke.net>
--
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 2290903..9ae8e9f 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -43,7 +43,7 @@
#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/fcntl.h>
-#include <asm/semaphore.h>
+#include <linux/mutex.h>
#include <asm/string.h>
#include <asm/atomic.h>
#include <net/sock.h>
@@ -63,7 +63,7 @@
struct tipc_sock {
struct sock sk;
struct tipc_port *p;
- struct semaphore sem;
+ struct mutex lock;
};
#define tipc_sk(sk) ((struct tipc_sock*)sk)
@@ -217,7 +217,7 @@ static int tipc_create(struct net *net, struct socket *sock, int protocol)
tsock->p = port;
port->usr_handle = tsock;
- init_MUTEX(&tsock->sem);
+ mutex_init(&tsock->lock);
dbg("sock_create: %x\n",tsock);
@@ -253,9 +253,9 @@ static int release(struct socket *sock)
dbg("sock_delete: %x\n",tsock);
if (!tsock)
return 0;
- down(&tsock->sem);
+ mutex_lock(&tsock->lock);
if (!sock->sk) {
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return 0;
}
@@ -288,7 +288,7 @@ static int release(struct socket *sock)
atomic_dec(&tipc_queue_size);
}
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
sock_put(sk);
@@ -315,7 +315,7 @@ static int bind(struct socket *sock, struct sockaddr *uaddr, int uaddr_len)
struct sockaddr_tipc *addr = (struct sockaddr_tipc *)uaddr;
int res;
- if (down_interruptible(&tsock->sem))
+ if (mutex_lock_interruptible(&tsock->lock))
return -ERESTARTSYS;
if (unlikely(!uaddr_len)) {
@@ -346,7 +346,7 @@ static int bind(struct socket *sock, struct sockaddr *uaddr, int uaddr_len)
res = tipc_withdraw(tsock->p->ref, -addr->scope,
&addr->addr.nameseq);
exit:
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
@@ -367,7 +367,7 @@ static int get_name(struct socket *sock, struct sockaddr *uaddr,
struct sockaddr_tipc *addr = (struct sockaddr_tipc *)uaddr;
u32 res;
- if (down_interruptible(&tsock->sem))
+ if (mutex_lock_interruptible(&tsock->lock))
return -ERESTARTSYS;
*uaddr_len = sizeof(*addr);
@@ -380,7 +380,7 @@ static int get_name(struct socket *sock, struct sockaddr *uaddr,
res = tipc_ownidentity(tsock->p->ref, &addr->addr.id);
addr->addr.name.domain = 0;
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
@@ -477,7 +477,7 @@ static int send_msg(struct kiocb *iocb, struct socket *sock,
}
}
- if (down_interruptible(&tsock->sem))
+ if (mutex_lock_interruptible(&tsock->lock))
return -ERESTARTSYS;
if (needs_conn) {
@@ -523,7 +523,7 @@ static int send_msg(struct kiocb *iocb, struct socket *sock,
}
if (likely(res != -ELINKCONG)) {
exit:
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
if (m->msg_flags & MSG_DONTWAIT) {
@@ -562,7 +562,7 @@ static int send_packet(struct kiocb *iocb, struct socket *sock,
if (unlikely(dest))
return send_msg(iocb, sock, m, total_len);
- if (down_interruptible(&tsock->sem)) {
+ if (mutex_lock_interruptible(&tsock->lock)) {
return -ERESTARTSYS;
}
@@ -578,7 +578,7 @@ static int send_packet(struct kiocb *iocb, struct socket *sock,
res = tipc_send(tsock->p->ref, m->msg_iovlen, m->msg_iov);
if (likely(res != -ELINKCONG)) {
exit:
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
if (m->msg_flags & MSG_DONTWAIT) {
@@ -846,7 +846,7 @@ static int recv_msg(struct kiocb *iocb, struct socket *sock,
/* Look for a message in receive queue; wait if necessary */
- if (unlikely(down_interruptible(&tsock->sem)))
+ if (unlikely(mutex_lock_interruptible(&tsock->lock)))
return -ERESTARTSYS;
restart:
@@ -930,7 +930,7 @@ restart:
advance_queue(tsock);
}
exit:
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
@@ -981,7 +981,7 @@ static int recv_stream(struct kiocb *iocb, struct socket *sock,
/* Look for a message in receive queue; wait if necessary */
- if (unlikely(down_interruptible(&tsock->sem)))
+ if (unlikely(mutex_lock_interruptible(&tsock->lock)))
return -ERESTARTSYS;
restart:
@@ -1077,7 +1077,7 @@ restart:
goto restart;
exit:
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return sz_copied ? sz_copied : res;
}
@@ -1293,7 +1293,7 @@ static int connect(struct socket *sock, struct sockaddr *dest, int destlen,
return res;
}
- if (down_interruptible(&tsock->sem))
+ if (mutex_lock_interruptible(&tsock->lock))
return -ERESTARTSYS;
/* Wait for destination's 'ACK' response */
@@ -1317,7 +1317,7 @@ static int connect(struct socket *sock, struct sockaddr *dest, int destlen,
sock->state = SS_DISCONNECTING;
}
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
@@ -1365,7 +1365,7 @@ static int accept(struct socket *sock, struct socket *newsock, int flags)
(flags & O_NONBLOCK)))
return -EWOULDBLOCK;
- if (down_interruptible(&tsock->sem))
+ if (mutex_lock_interruptible(&tsock->lock))
return -ERESTARTSYS;
if (wait_event_interruptible(*sock->sk->sk_sleep,
@@ -1412,7 +1412,7 @@ static int accept(struct socket *sock, struct socket *newsock, int flags)
}
}
exit:
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
@@ -1434,7 +1434,7 @@ static int shutdown(struct socket *sock, int how)
/* Could return -EINVAL for an invalid "how", but why bother? */
- if (down_interruptible(&tsock->sem))
+ if (mutex_lock_interruptible(&tsock->lock))
return -ERESTARTSYS;
sock_lock(tsock);
@@ -1484,7 +1484,7 @@ restart:
sock_unlock(tsock);
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
@@ -1518,7 +1518,7 @@ static int setsockopt(struct socket *sock,
if ((res = get_user(value, (u32 __user *)ov)))
return res;
- if (down_interruptible(&tsock->sem))
+ if (mutex_lock_interruptible(&tsock->lock))
return -ERESTARTSYS;
switch (opt) {
@@ -1541,7 +1541,7 @@ static int setsockopt(struct socket *sock,
res = -EINVAL;
}
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
@@ -1574,7 +1574,7 @@ static int getsockopt(struct socket *sock,
if ((res = get_user(len, ol)))
return res;
- if (down_interruptible(&tsock->sem))
+ if (mutex_lock_interruptible(&tsock->lock))
return -ERESTARTSYS;
switch (opt) {
@@ -1607,7 +1607,7 @@ static int getsockopt(struct socket *sock,
res = put_user(sizeof(value), ol);
}
- up(&tsock->sem);
+ mutex_unlock(&tsock->lock);
return res;
}
--
Matthias Kaehlcke
Linux System Developer
Barcelona
Ma patrie est où je suis, où personne ne me dérange, où personne
ne me demande que je suis, d'où je viens et ce que je fais
(B. Traven)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [tipc-discussion] [PATCH] TIPC Protocol: Convert tsock->sem in a mutex
2008-03-02 18:36 [PATCH] TIPC Protocol: Convert tsock->sem in a mutex Matthias Kaehlcke
@ 2008-03-02 22:16 ` Florian Westphal
2008-03-04 7:37 ` David Miller
1 sibling, 0 replies; 3+ messages in thread
From: Florian Westphal @ 2008-03-02 22:16 UTC (permalink / raw)
To: tipc-discussion
Cc: Matthias Kaehlcke, per.liden, jon.maloy, allan.stephens,
linux-kernel, akpm
Matthias Kaehlcke <matthias@kaehlcke.net> wrote:
> TIPC Protocol: The semaphore tsock->sem is used as mutex, convert it
> to the mutex API
The locking mechanism was re-done in TIPC 1.7.X, and
AFAIK Allan Stephens is working on submitting
the current TIPC version for inclusion in 2.6.26.
So it probably doesn't make much sense to merge this patch
(even though it looks correct).
Sorry.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] TIPC Protocol: Convert tsock->sem in a mutex
2008-03-02 18:36 [PATCH] TIPC Protocol: Convert tsock->sem in a mutex Matthias Kaehlcke
2008-03-02 22:16 ` [tipc-discussion] " Florian Westphal
@ 2008-03-04 7:37 ` David Miller
1 sibling, 0 replies; 3+ messages in thread
From: David Miller @ 2008-03-04 7:37 UTC (permalink / raw)
To: matthias
Cc: per.liden, jon.maloy, allan.stephens, tipc-discussion,
linux-kernel, akpm
From: Matthias Kaehlcke <matthias@kaehlcke.net>
Date: Sun, 2 Mar 2008 19:36:37 +0100
> TIPC Protocol: The semaphore tsock->sem is used as mutex, convert it
> to the mutex API
>
> Signed-off-by: Matthias Kaehlcke <matthias@kaehlcke.net>
Applied, thanks a lot.
Yes, I know the TIPC folks said they have a bunch of stuff coming.
But too bad, the TIPC folks haven't been able to submit patches
properly lately and I'm not going to penalize someone like Matthias
who can submit a clean, correct, and proper patch.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-03-04 7:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-02 18:36 [PATCH] TIPC Protocol: Convert tsock->sem in a mutex Matthias Kaehlcke
2008-03-02 22:16 ` [tipc-discussion] " Florian Westphal
2008-03-04 7:37 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).