fmask = headers_c + soffset;
        fval = headers_v + soffset;
 
-       mask = cpu_to_be32(mask) >> (32 - (match_len * 8));
-       data = cpu_to_be32(data) >> (32 - (match_len * 8));
+       mask = (__force u32)(cpu_to_be32(mask)) >> (32 - (match_len * 8));
+       data = (__force u32)(cpu_to_be32(data)) >> (32 - (match_len * 8));
 
        memcpy(fmask, &mask, match_len);
        memcpy(fval, &data, match_len);
                        continue;
 
                if (f->field_bsize == 32) {
-                       mask_be32 = (__be32)mask;
+                       mask_be32 = (__force __be32)(mask);
                        mask = (__force unsigned long)cpu_to_le32(be32_to_cpu(mask_be32));
                } else if (f->field_bsize == 16) {
-                       mask_be32 = (__be32)mask;
+                       mask_be32 = (__force __be32)(mask);
                        mask_be16 = *(__be16 *)&mask_be32;
                        mask = (__force unsigned long)cpu_to_le16(be16_to_cpu(mask_be16));
                }