Merge mulgrave-w:git/scsi-misc-2.6
[pandora-kernel.git] / net / atm / clip.c
index 121bf6f..7af2c41 100644 (file)
@@ -500,9 +500,11 @@ static int clip_mkip(struct atm_vcc *vcc, int timeout)
                } else {
                        unsigned int len = skb->len;
 
+                       skb_get(skb);
                        clip_push(vcc, skb);
                        PRIV(skb->dev)->stats.rx_packets--;
                        PRIV(skb->dev)->stats.rx_bytes -= len;
+                       kfree_skb(skb);
                }
        return 0;
 }
@@ -929,12 +931,11 @@ static int arp_seq_open(struct inode *inode, struct file *file)
        struct seq_file *seq;
        int rc = -EAGAIN;
 
-       state = kmalloc(sizeof(*state), GFP_KERNEL);
+       state = kzalloc(sizeof(*state), GFP_KERNEL);
        if (!state) {
                rc = -ENOMEM;
                goto out_kfree;
        }
-       memset(state, 0, sizeof(*state));
        state->ns.neigh_sub_iter = clip_seq_sub_iter;
 
        rc = seq_open(file, &arp_seq_ops);
@@ -962,7 +963,6 @@ static struct file_operations arp_seq_fops = {
 
 static int __init atm_clip_init(void)
 {
-       struct proc_dir_entry *p;
        neigh_table_init_no_netlink(&clip_tbl);
 
        clip_tbl_hook = &clip_tbl;
@@ -972,9 +972,15 @@ static int __init atm_clip_init(void)
 
        setup_timer(&idle_timer, idle_timer_check, 0);
 
-       p = create_proc_entry("arp", S_IRUGO, atm_proc_root);
-       if (p)
-               p->proc_fops = &arp_seq_fops;
+#ifdef CONFIG_PROC_FS
+       {
+               struct proc_dir_entry *p;
+
+               p = create_proc_entry("arp", S_IRUGO, atm_proc_root);
+               if (p)
+                       p->proc_fops = &arp_seq_fops;
+       }
+#endif
 
        return 0;
 }