Commit 14a59e1829cd5782ad1a8979e594578f49f3e2c1
Committed by
David S. Miller
1 parent
4acdbdbe50
[EQL]: Proper num_slaves decrement
Signed-off-by: Loic Le Loarer <loic.le-loarer+lk@polytechnique.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 1 changed file with 8 additions and 8 deletions Side-by-side Diff
drivers/net/eql.c
... | ... | @@ -132,7 +132,7 @@ |
132 | 132 | #define eql_is_slave(dev) ((dev->flags & IFF_SLAVE) == IFF_SLAVE) |
133 | 133 | #define eql_is_master(dev) ((dev->flags & IFF_MASTER) == IFF_MASTER) |
134 | 134 | |
135 | -static void eql_kill_one_slave(slave_t *slave); | |
135 | +static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave); | |
136 | 136 | |
137 | 137 | static void eql_timer(unsigned long param) |
138 | 138 | { |
... | ... | @@ -149,7 +149,7 @@ |
149 | 149 | if (slave->bytes_queued < 0) |
150 | 150 | slave->bytes_queued = 0; |
151 | 151 | } else { |
152 | - eql_kill_one_slave(slave); | |
152 | + eql_kill_one_slave(&eql->queue, slave); | |
153 | 153 | } |
154 | 154 | |
155 | 155 | } |
156 | 156 | |
... | ... | @@ -214,9 +214,10 @@ |
214 | 214 | return 0; |
215 | 215 | } |
216 | 216 | |
217 | -static void eql_kill_one_slave(slave_t *slave) | |
217 | +static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave) | |
218 | 218 | { |
219 | 219 | list_del(&slave->list); |
220 | + queue->num_slaves--; | |
220 | 221 | slave->dev->flags &= ~IFF_SLAVE; |
221 | 222 | dev_put(slave->dev); |
222 | 223 | kfree(slave); |
... | ... | @@ -232,8 +233,7 @@ |
232 | 233 | list_for_each_safe(this, tmp, head) { |
233 | 234 | slave_t *s = list_entry(this, slave_t, list); |
234 | 235 | |
235 | - eql_kill_one_slave(s); | |
236 | - queue->num_slaves--; | |
236 | + eql_kill_one_slave(queue, s); | |
237 | 237 | } |
238 | 238 | |
239 | 239 | spin_unlock_bh(&queue->lock); |
... | ... | @@ -318,7 +318,7 @@ |
318 | 318 | } |
319 | 319 | } else { |
320 | 320 | /* We found a dead slave, kill it. */ |
321 | - eql_kill_one_slave(slave); | |
321 | + eql_kill_one_slave(queue, slave); | |
322 | 322 | } |
323 | 323 | } |
324 | 324 | return best_slave; |
... | ... | @@ -393,7 +393,7 @@ |
393 | 393 | |
394 | 394 | duplicate_slave = __eql_find_slave_dev(queue, slave->dev); |
395 | 395 | if (duplicate_slave != 0) |
396 | - eql_kill_one_slave(duplicate_slave); | |
396 | + eql_kill_one_slave(queue, duplicate_slave); | |
397 | 397 | |
398 | 398 | list_add(&slave->list, &queue->all_slaves); |
399 | 399 | queue->num_slaves++; |
... | ... | @@ -471,7 +471,7 @@ |
471 | 471 | slave_dev); |
472 | 472 | |
473 | 473 | if (slave) { |
474 | - eql_kill_one_slave(slave); | |
474 | + eql_kill_one_slave(&eql->queue, slave); | |
475 | 475 | ret = 0; |
476 | 476 | } |
477 | 477 | } |