VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / drivers / ieee1394 / eth1394.c
index 48a7c50..a9709b8 100644 (file)
@@ -290,6 +290,20 @@ static int ether1394_change_mtu(struct net_device *dev, int new_mtu)
        return 0;
 }
 
+static inline void purge_partial_datagram(struct list_head *old)
+{
+       struct partial_datagram *pd = list_entry(old, struct partial_datagram, list);
+       struct list_head *lh, *n;
+
+       list_for_each_safe(lh, n, &pd->frag_info) {
+               struct fragment_info *fi = list_entry(lh, struct fragment_info, list);
+               list_del(lh);
+               kfree(fi);
+       }
+       list_del(old);
+       kfree_skb(pd->skb);
+       kfree(pd);
+}
 
 /******************************************
  * 1394 bus activity functions
@@ -431,9 +445,12 @@ static int eth1394_update(struct unit_directory *ud)
                if (!node)
                        return -ENOMEM;
 
-
                node_info = kmalloc(sizeof(struct eth1394_node_info),
                                    in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
+               if (!node_info) {
+                       kfree(node);
+                       return -ENOMEM;
+                }
 
                spin_lock_init(&node_info->pdg.lock);
                INIT_LIST_HEAD(&node_info->pdg.list);
@@ -1078,21 +1095,6 @@ static inline int update_partial_datagram(struct list_head *pdgl, struct list_he
        return 0;
 }
 
-static inline void purge_partial_datagram(struct list_head *old)
-{
-       struct partial_datagram *pd = list_entry(old, struct partial_datagram, list);
-       struct list_head *lh, *n;
-
-       list_for_each_safe(lh, n, &pd->frag_info) {
-               struct fragment_info *fi = list_entry(lh, struct fragment_info, list);
-               list_del(lh);
-               kfree(fi);
-       }
-       list_del(old);
-       kfree_skb(pd->skb);
-       kfree(pd);
-}
-
 static inline int is_datagram_complete(struct list_head *lh, int dg_size)
 {
        struct partial_datagram *pd = list_entry(lh, struct partial_datagram, list);