diff options
| -rw-r--r-- | net/netfilter/nft_meta.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c index 8fb91940e2e7..204af9899482 100644 --- a/net/netfilter/nft_meta.c +++ b/net/netfilter/nft_meta.c | |||
| @@ -234,7 +234,7 @@ void nft_meta_set_eval(const struct nft_expr *expr, | |||
| 234 | struct sk_buff *skb = pkt->skb; | 234 | struct sk_buff *skb = pkt->skb; |
| 235 | u32 *sreg = ®s->data[meta->sreg]; | 235 | u32 *sreg = ®s->data[meta->sreg]; |
| 236 | u32 value = *sreg; | 236 | u32 value = *sreg; |
| 237 | u8 pkt_type; | 237 | u8 value8; |
| 238 | 238 | ||
| 239 | switch (meta->key) { | 239 | switch (meta->key) { |
| 240 | case NFT_META_MARK: | 240 | case NFT_META_MARK: |
| @@ -244,15 +244,17 @@ void nft_meta_set_eval(const struct nft_expr *expr, | |||
| 244 | skb->priority = value; | 244 | skb->priority = value; |
| 245 | break; | 245 | break; |
| 246 | case NFT_META_PKTTYPE: | 246 | case NFT_META_PKTTYPE: |
| 247 | pkt_type = nft_reg_load8(sreg); | 247 | value8 = nft_reg_load8(sreg); |
| 248 | 248 | ||
| 249 | if (skb->pkt_type != pkt_type && | 249 | if (skb->pkt_type != value8 && |
| 250 | skb_pkt_type_ok(pkt_type) && | 250 | skb_pkt_type_ok(value8) && |
| 251 | skb_pkt_type_ok(skb->pkt_type)) | 251 | skb_pkt_type_ok(skb->pkt_type)) |
| 252 | skb->pkt_type = pkt_type; | 252 | skb->pkt_type = value8; |
| 253 | break; | 253 | break; |
| 254 | case NFT_META_NFTRACE: | 254 | case NFT_META_NFTRACE: |
| 255 | skb->nf_trace = !!value; | 255 | value8 = nft_reg_load8(sreg); |
| 256 | |||
| 257 | skb->nf_trace = !!value8; | ||
| 256 | break; | 258 | break; |
| 257 | default: | 259 | default: |
| 258 | WARN_ON(1); | 260 | WARN_ON(1); |
