flow_node = tbl_lookup(rcu_dereference(dp->table), &key,
                                        flow_hash(&key), flow_cmp);
                if (unlikely(!flow_node)) {
-                       dp_output_control(dp, skb, _ODPL_MISS_NR, OVS_CB(skb)->tun_id);
+                       dp_output_control(dp, skb, _ODPL_MISS_NR,
+                                        (__force u64)OVS_CB(skb)->tun_id);
                        stats_counter_off = offsetof(struct dp_stats_percpu, n_missed);
                        goto out;
                }
 
                u8  ssap;  /* Always 0xAA */
                u8  ctrl;
                u8  oui[3];
-               u16 ethertype;
+               __be16 ethertype;
        };
        struct llc_snap_hdr *llc;
        __be16 proto;
 
 
 static u32 port_hash(struct port_lookup_key *k)
 {
-       u32 x = jhash_3words(k->saddr, k->daddr, k->tunnel_type, 0);
-       return jhash_2words(k->key >> 32, k->key, x);
+       u32 x = jhash_3words((__force u32)k->saddr, (__force u32)k->daddr,
+                            k->tunnel_type, 0);
+       return jhash_2words((__force u64)k->key >> 32, (__force u32)k->key, x);
 }
 
 static u32 mutable_hash(const struct tnl_mutable_config *mutable)
 
 static __be32 be64_get_low32(__be64 x)
 {
 #ifdef __BIG_ENDIAN
-       return x;
+       return (__force __be32)x;
 #else
-       return x >> 32;
+       return (__force __be32)((__force u64)x >> 32);
 #endif
 }
 
 static __be64 be32_extend_to_be64(__be32 x)
 {
 #ifdef __BIG_ENDIAN
-       return x;
+       return (__force __be64)x;
 #else
-       return (__be64) x << 32;
+       return (__force __be64)((__force u64)x << 32);
 #endif
 }