struct fib6_node *fn;
        int dir;
 
+       if (unlikely(args->offset == 0))
+               return NULL;
+
        /*
         *      Descend on a tree
         */
 struct fib6_node * fib6_lookup(struct fib6_node *root, struct in6_addr *daddr,
                               struct in6_addr *saddr)
 {
-       struct lookup_args args[2];
        struct fib6_node *fn;
-
-       args[0].offset = offsetof(struct rt6_info, rt6i_dst);
-       args[0].addr = daddr;
-
+       struct lookup_args args[] = {
+               {
+                       .offset = offsetof(struct rt6_info, rt6i_dst),
+                       .addr = daddr,
+               },
 #ifdef CONFIG_IPV6_SUBTREES
-       args[1].offset = offsetof(struct rt6_info, rt6i_src);
-       args[1].addr = saddr;
+               {
+                       .offset = offsetof(struct rt6_info, rt6i_src),
+                       .addr = saddr,
+               },
 #endif
+               {
+                       .offset = 0,    /* sentinel */
+               }
+       };
 
        fn = fib6_lookup_1(root, args);