User: | Jiri Slaby |
Error type: | Leaving function in locked state |
Error type description: | Some lock is not unlocked on all paths of a function, so it is leaked |
File location: | drivers/net/bonding/bond_main.c |
Line in file: | 3202 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Stanse
(1.2)
|
Entered: | 2012-05-21 20:30:05 UTC |
3172 rtnl_unlock(); 3173 read_lock(&bond->lock); 3174 } 3175 3176 bond_ab_arp_probe(bond); 3177 3178re_arm: 3179 if (bond->params.arp_interval) { 3180 queue_delayed_work(bond->wq, &bond->arp_work, delta_in_ticks); 3181 } 3182out: 3183 read_unlock(&bond->lock); 3184} 3185 3186/*------------------------------ proc/seq_file-------------------------------*/ 3187 3188#ifdef CONFIG_PROC_FS 3189 3190static void *bond_info_seq_start(struct seq_file *seq, loff_t *pos) 3191{ 3192 struct bonding *bond = seq->private; 3193 loff_t off = 0; 3194 struct slave *slave; 3195 int i; 3196 3197 /* make sure the bond won't be taken away */ 3198 read_lock(&dev_base_lock); 3199 read_lock(&bond->lock); 3200 3201 if (*pos == 0) { 3202 return SEQ_START_TOKEN; 3203 } 3204 3205 bond_for_each_slave(bond, slave, i) { 3206 if (++off == *pos) { 3207 return slave; 3208 } 3209 } 3210 3211 return NULL; 3212}