git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
net
/
atm
/
common.c
diff --git
a/net/atm/common.c
b/net/atm/common.c
index
19d31f1
..
85556b1
100644
(file)
--- a/
net/atm/common.c
+++ b/
net/atm/common.c
@@
-39,7
+39,7
@@
#endif
struct hlist_head vcc_hash[VCC_HTABLE_SIZE];
#endif
struct hlist_head vcc_hash[VCC_HTABLE_SIZE];
-
rwlock_t vcc_sklist_lock = RW_LOCK_UNLOCKED
;
+
DEFINE_RWLOCK(vcc_sklist_lock)
;
void __vcc_insert_socket(struct sock *sk)
{
void __vcc_insert_socket(struct sock *sk)
{
@@
-57,7
+57,7
@@
void vcc_insert_socket(struct sock *sk)
write_unlock_irq(&vcc_sklist_lock);
}
write_unlock_irq(&vcc_sklist_lock);
}
-void vcc_remove_socket(struct sock *sk)
+
static
void vcc_remove_socket(struct sock *sk)
{
write_lock_irq(&vcc_sklist_lock);
sk_del_node_init(sk);
{
write_lock_irq(&vcc_sklist_lock);
sk_del_node_init(sk);
@@
-86,7
+86,6
@@
static struct sk_buff *alloc_tx(struct atm_vcc *vcc,unsigned int size)
EXPORT_SYMBOL(vcc_hash);
EXPORT_SYMBOL(vcc_sklist_lock);
EXPORT_SYMBOL(vcc_insert_socket);
EXPORT_SYMBOL(vcc_hash);
EXPORT_SYMBOL(vcc_sklist_lock);
EXPORT_SYMBOL(vcc_insert_socket);
-EXPORT_SYMBOL(vcc_remove_socket);
static void vcc_sock_destruct(struct sock *sk)
{
static void vcc_sock_destruct(struct sock *sk)
{
@@
-178,6
+177,7
@@
static void vcc_destroy_socket(struct sock *sk)
struct atm_vcc *vcc = atm_sk(sk);
struct sk_buff *skb;
struct atm_vcc *vcc = atm_sk(sk);
struct sk_buff *skb;
+ set_bit(ATM_VF_CLOSE, &vcc->flags);
clear_bit(ATM_VF_READY, &vcc->flags);
if (vcc->dev) {
if (vcc->dev->ops->close)
clear_bit(ATM_VF_READY, &vcc->flags);
if (vcc->dev) {
if (vcc->dev->ops->close)
@@
-216,6
+216,7
@@
int vcc_release(struct socket *sock)
void vcc_release_async(struct atm_vcc *vcc, int reply)
{
set_bit(ATM_VF_CLOSE, &vcc->flags);
void vcc_release_async(struct atm_vcc *vcc, int reply)
{
set_bit(ATM_VF_CLOSE, &vcc->flags);
+ vcc->sk->sk_shutdown |= RCV_SHUTDOWN;
vcc->sk->sk_err = -reply;
clear_bit(ATM_VF_WAITING, &vcc->flags);
vcc->sk->sk_state_change(vcc->sk);
vcc->sk->sk_err = -reply;
clear_bit(ATM_VF_WAITING, &vcc->flags);
vcc->sk->sk_state_change(vcc->sk);