Like in commit 
44713b67db10c774f14280c129b0d5fd13c70cf2
("ipv4: Optimize flow initialization in output route lookup."
we can optimize the on-stack flow setup to only initialize
the members which are actually used.
Otherwise we bzero the entire structure, then initialize
explicitly the first half of it.
Signed-off-by: David S. Miller <davem@davemloft.net>
 {
        struct fib_result res;
        struct in_device *in_dev = __in_dev_get_rcu(dev);
-       struct flowi fl = { .fl4_dst    = daddr,
-                           .fl4_src    = saddr,
-                           .fl4_tos    = tos,
-                           .fl4_scope  = RT_SCOPE_UNIVERSE,
-                           .mark = skb->mark,
-                           .iif = dev->ifindex };
+       struct flowi fl;
        unsigned        flags = 0;
        u32             itag = 0;
        struct rtable * rth;
        /*
         *      Now we are ready to route packet.
         */
+       fl.oif = 0;
+       fl.iif = dev->ifindex;
+       fl.mark = skb->mark;
+       fl.fl4_dst = daddr;
+       fl.fl4_src = saddr;
+       fl.fl4_tos = tos;
+       fl.fl4_scope = RT_SCOPE_UNIVERSE;
        err = fib_lookup(net, &fl, &res);
        if (err != 0) {
                if (!IN_DEV_FORWARD(in_dev))