const struct sk_buff *skb, struct flow_keys *flkeys)
 {
        struct flow_keys hash_keys;
-       u32 mhash;
+       u32 mhash = 0;
 
        switch (ip6_multipath_hash_policy(net)) {
        case 0:
                        hash_keys.tags.flow_label = (__force u32)flowi6_get_flowlabel(fl6);
                        hash_keys.basic.ip_proto = fl6->flowi6_proto;
                }
+               mhash = flow_hash_from_keys(&hash_keys);
                break;
        case 1:
                if (skb) {
                        hash_keys.ports.dst = fl6->fl6_dport;
                        hash_keys.basic.ip_proto = fl6->flowi6_proto;
                }
+               mhash = flow_hash_from_keys(&hash_keys);
                break;
        case 2:
                memset(&hash_keys, 0, sizeof(hash_keys));
                        hash_keys.tags.flow_label = (__force u32)flowi6_get_flowlabel(fl6);
                        hash_keys.basic.ip_proto = fl6->flowi6_proto;
                }
+               mhash = flow_hash_from_keys(&hash_keys);
                break;
        }
-       mhash = flow_hash_from_keys(&hash_keys);
 
        return mhash >> 1;
 }