upgrade to linux 2.6.10-1.12_FC2
[linux-2.6.git] / net / rose / rose_route.c
index 47664dc..b7dda61 100644 (file)
@@ -206,7 +206,6 @@ static void rose_remove_node(struct rose_node *rose_node)
 {
        struct rose_node *s;
 
-       spin_lock_bh(&rose_node_list_lock);
        if ((s = rose_node_list) == rose_node) {
                rose_node_list = rose_node->next;
                kfree(rose_node);
@@ -710,7 +709,7 @@ out:
 /*
  *     Handle the ioctls that control the routing functions.
  */
-int rose_rt_ioctl(unsigned int cmd, void *arg)
+int rose_rt_ioctl(unsigned int cmd, void __user *arg)
 {
        struct rose_route_struct rose_route;
        struct net_device *dev;
@@ -728,7 +727,8 @@ int rose_rt_ioctl(unsigned int cmd, void *arg)
                }
                if (rose_route.mask > 10) /* Mask can't be more than 10 digits */
                        return -EINVAL;
-
+               if(rose_route.ndigis > 8) /* No more than 8 digipeats */
+                       return -EINVAL;
                err = rose_add_node(&rose_route, dev);
                dev_put(dev);
                return err;