[IPV6]: Event type in addrconf_ifdown is mis-used.
[pandora-kernel.git] / net / irda / irlmp.c
index 7efa930..135ac69 100644 (file)
@@ -18,7 +18,7 @@
  *     published by the Free Software Foundation; either version 2 of
  *     the License, or (at your option) any later version.
  *
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
+ *     Neither Dag Brattli nor University of Tromsø admit liability nor
  *     provide warranty for any of this software. This material is
  *     provided "AS-IS" and at no charge.
  *
@@ -103,9 +103,12 @@ int __init irlmp_init(void)
        irlmp->last_lsap_sel = 0x0f; /* Reserved 0x00-0x0f */
        strcpy(sysctl_devname, "Linux");
 
-       /* Do discovery every 3 seconds */
        init_timer(&irlmp->discovery_timer);
-       irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout*HZ);
+
+       /* Do discovery every 3 seconds, conditionaly */
+       if (sysctl_discovery)
+               irlmp_start_discovery_timer(irlmp,
+                                           sysctl_discovery_timeout*HZ);
 
        return 0;
 }
@@ -353,6 +356,7 @@ void irlmp_unregister_link(__u32 saddr)
                /* Final cleanup */
                del_timer(&link->idle_timer);
                link->magic = 0;
+               hashbin_delete(link->lsaps, (FREE_FUNC) __irlmp_close_lsap);
                kfree(link);
        }
 }
@@ -2003,27 +2007,10 @@ static const struct seq_operations irlmp_seq_ops = {
 
 static int irlmp_seq_open(struct inode *inode, struct file *file)
 {
-       struct seq_file *seq;
-       int rc = -ENOMEM;
-       struct irlmp_iter_state *s;
-
        IRDA_ASSERT(irlmp != NULL, return -EINVAL;);
 
-       s = kmalloc(sizeof(*s), GFP_KERNEL);
-       if (!s)
-               goto out;
-
-       rc = seq_open(file, &irlmp_seq_ops);
-       if (rc)
-               goto out_kfree;
-
-       seq          = file->private_data;
-       seq->private = s;
-out:
-       return rc;
-out_kfree:
-       kfree(s);
-       goto out;
+       return seq_open_private(file, &irlmp_seq_ops,
+                       sizeof(struct irlmp_iter_state));
 }
 
 const struct file_operations irlmp_seq_fops = {