bad slaves count in eql driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello

With a 2.6.8.1 kernel, using eql as a module, I have the problem when I
remove the interfaces under eql without using eql_emancipate ioctl (it
is ppp interfaces which are removed sometimes). When I try to add a new
slave interface after having removed several interfaces, I have the
error :
EQL_ENSLAVE failed: No space left on device

I have looked at the drivers/net/eql.c code and it seems that the
num_slaves variable is not decremented properly when a dead interface is
detected. I have modified the code to decrement num_slaves needed (after
each eql_kill_one_slave call) and it works much better. Here is the
patch.

I hope it could be merged.

Please Cc me on answer, I'm not on the list.

Regards.

-- 
Loïc

---
diff -Nur a/drivers/net/eql.c b/drivers/net/eql.c
--- a/drivers/net/eql.c	2004-08-14 07:37:40.000000000 +0200
+++ b/drivers/net/eql.c	2004-09-03 15:16:41.000000000 +0200
@@ -319,6 +319,7 @@
 		} else {
 			/* We found a dead slave, kill it. */
 			eql_kill_one_slave(slave);
+		    queue->num_slaves--;
 		}
 	}
 	return best_slave;
@@ -392,8 +393,10 @@
 		slave_t *duplicate_slave = NULL;
 
 		duplicate_slave = __eql_find_slave_dev(queue, slave->dev);
-		if (duplicate_slave != 0)
+		if (duplicate_slave != 0) {
 			eql_kill_one_slave(duplicate_slave);
+		    queue->num_slaves--;
+        }
 
 		list_add(&slave->list, &queue->all_slaves);
 		queue->num_slaves++;
@@ -472,6 +475,7 @@
 
 			if (slave) {
 				eql_kill_one_slave(slave);
+		        eql->queue.num_slaves--;
 				ret = 0;
 			}
 		}
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux