Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 14795
b: refs/heads/master
c: aaaaaad
h: refs/heads/master
i:
  14793: 65a8ddd
  14791: c9f4e59
v: v3
  • Loading branch information
Stanislaw Gruszka authored and David S. Miller committed Nov 30, 2005
1 parent 4c05543 commit 279a8dd
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 49693280262a149e5430d3401e263e464c88334a
refs/heads/master: aaaaaadbe7a663d110814db50fcbe7d320eb4c32
4 changes: 2 additions & 2 deletions trunk/net/atm/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -427,12 +427,12 @@ int vcc_connect(struct socket *sock, int itf, short vpi, int vci)
dev = try_then_request_module(atm_dev_lookup(itf), "atm-device-%d", itf);
} else {
dev = NULL;
spin_lock(&atm_dev_lock);
down(&atm_dev_mutex);
if (!list_empty(&atm_devs)) {
dev = list_entry(atm_devs.next, struct atm_dev, dev_list);
atm_dev_hold(dev);
}
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);
}
if (!dev)
return -ENODEV;
Expand Down
36 changes: 17 additions & 19 deletions trunk/net/atm/resources.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@


LIST_HEAD(atm_devs);
DEFINE_SPINLOCK(atm_dev_lock);
DECLARE_MUTEX(atm_dev_mutex);

static struct atm_dev *__alloc_atm_dev(const char *type)
{
Expand All @@ -52,7 +52,7 @@ static struct atm_dev *__atm_dev_lookup(int number)

list_for_each(p, &atm_devs) {
dev = list_entry(p, struct atm_dev, dev_list);
if ((dev->ops) && (dev->number == number)) {
if (dev->number == number) {
atm_dev_hold(dev);
return dev;
}
Expand All @@ -64,9 +64,9 @@ struct atm_dev *atm_dev_lookup(int number)
{
struct atm_dev *dev;

spin_lock(&atm_dev_lock);
down(&atm_dev_mutex);
dev = __atm_dev_lookup(number);
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);
return dev;
}

Expand All @@ -81,11 +81,11 @@ struct atm_dev *atm_dev_register(const char *type, const struct atmdev_ops *ops,
type);
return NULL;
}
spin_lock(&atm_dev_lock);
down(&atm_dev_mutex);
if (number != -1) {
if ((inuse = __atm_dev_lookup(number))) {
atm_dev_put(inuse);
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);
kfree(dev);
return NULL;
}
Expand All @@ -105,19 +105,17 @@ struct atm_dev *atm_dev_register(const char *type, const struct atmdev_ops *ops,
memset(&dev->flags, 0, sizeof(dev->flags));
memset(&dev->stats, 0, sizeof(dev->stats));
atomic_set(&dev->refcnt, 1);
list_add_tail(&dev->dev_list, &atm_devs);
spin_unlock(&atm_dev_lock);

if (atm_proc_dev_register(dev) < 0) {
printk(KERN_ERR "atm_dev_register: "
"atm_proc_dev_register failed for dev %s\n",
type);
spin_lock(&atm_dev_lock);
list_del(&dev->dev_list);
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);
kfree(dev);
return NULL;
}
list_add_tail(&dev->dev_list, &atm_devs);
up(&atm_dev_mutex);

return dev;
}
Expand All @@ -129,9 +127,9 @@ void atm_dev_deregister(struct atm_dev *dev)

atm_proc_dev_deregister(dev);

spin_lock(&atm_dev_lock);
down(&atm_dev_mutex);
list_del(&dev->dev_list);
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);

warning_time = jiffies;
while (atomic_read(&dev->refcnt) != 1) {
Expand Down Expand Up @@ -211,24 +209,24 @@ int atm_dev_ioctl(unsigned int cmd, void __user *arg)
return -EFAULT;
if (get_user(len, &iobuf->length))
return -EFAULT;
spin_lock(&atm_dev_lock);
down(&atm_dev_mutex);
list_for_each(p, &atm_devs)
size += sizeof(int);
if (size > len) {
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);
return -E2BIG;
}
tmp_buf = kmalloc(size, GFP_ATOMIC);
if (!tmp_buf) {
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);
return -ENOMEM;
}
tmp_p = tmp_buf;
list_for_each(p, &atm_devs) {
dev = list_entry(p, struct atm_dev, dev_list);
*tmp_p++ = dev->number;
}
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);
error = ((copy_to_user(buf, tmp_buf, size)) ||
put_user(size, &iobuf->length))
? -EFAULT : 0;
Expand Down Expand Up @@ -415,13 +413,13 @@ static __inline__ void *dev_get_idx(loff_t left)

void *atm_dev_seq_start(struct seq_file *seq, loff_t *pos)
{
spin_lock(&atm_dev_lock);
down(&atm_dev_mutex);
return *pos ? dev_get_idx(*pos) : (void *) 1;
}

void atm_dev_seq_stop(struct seq_file *seq, void *v)
{
spin_unlock(&atm_dev_lock);
up(&atm_dev_mutex);
}

void *atm_dev_seq_next(struct seq_file *seq, void *v, loff_t *pos)
Expand Down
3 changes: 1 addition & 2 deletions trunk/net/atm/resources.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@


extern struct list_head atm_devs;
extern spinlock_t atm_dev_lock;

extern struct semaphore atm_dev_mutex;

int atm_dev_ioctl(unsigned int cmd, void __user *arg);

Expand Down

0 comments on commit 279a8dd

Please sign in to comment.