@@ -145,11 +145,26 @@ static inline void nft_reg_store16(u32 *dreg, u16 val)
145145 * (u16 * )dreg = val ;
146146}
147147
148+ static inline void nft_reg_store_be16 (u32 * dreg , __be16 val )
149+ {
150+ nft_reg_store16 (dreg , (__force __u16 )val );
151+ }
152+
148153static inline u16 nft_reg_load16 (const u32 * sreg )
149154{
150155 return * (u16 * )sreg ;
151156}
152157
158+ static inline __be16 nft_reg_load_be16 (const u32 * sreg )
159+ {
160+ return (__force __be16 )nft_reg_load16 (sreg );
161+ }
162+
163+ static inline __be32 nft_reg_load_be32 (const u32 * sreg )
164+ {
165+ return * (__force __be32 * )sreg ;
166+ }
167+
153168static inline void nft_reg_store64 (u64 * dreg , u64 val )
154169{
155170 put_unaligned (val , dreg );
@@ -791,7 +806,7 @@ static inline bool __nft_set_elem_expired(const struct nft_set_ext *ext,
791806 u64 tstamp )
792807{
793808 return nft_set_ext_exists (ext , NFT_SET_EXT_EXPIRATION ) &&
794- time_after_eq64 (tstamp , * nft_set_ext_expiration (ext ));
809+ time_after_eq64 (tstamp , READ_ONCE ( * nft_set_ext_expiration (ext ) ));
795810}
796811
797812static inline bool nft_set_elem_expired (const struct nft_set_ext * ext )
@@ -1562,6 +1577,7 @@ struct nft_trans_rule {
15621577 (((struct nft_trans_rule *)trans->data)->bound)
15631578
15641579struct nft_trans_set {
1580+ struct list_head list_trans_newset ;
15651581 struct nft_set * set ;
15661582 u32 set_id ;
15671583 u32 gc_int ;
@@ -1710,6 +1726,7 @@ static inline int nft_request_module(struct net *net, const char *fmt, ...) { re
17101726struct nftables_pernet {
17111727 struct list_head tables ;
17121728 struct list_head commit_list ;
1729+ struct list_head commit_set_list ;
17131730 struct list_head binding_list ;
17141731 struct list_head module_list ;
17151732 struct list_head notify_list ;
0 commit comments