History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

Pull networking fixes from David Miller: 1) Fix several scatter gather list issues in kTLS code, from Jakub Kicinski. 2) macb driver device remove has to kill the hresp_err_tasklet. From Chuhong Yuan. 3) Several memory leak and reference count bug fixes in tipc, from Tung Nguyen. 4) Fix mlx5 build error w/o ipv6, from Yue Haibing. 5) Fix jumbo frame and other regressions in r8169, from Heiner Kallweit. 6) Undo some BUG_ON()'s and replace them with WARN_ON_ONCE and proper error propagation/handling. From Paolo Abeni. * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (24 commits) openvswitch: remove another BUG_ON() openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() net: phy: realtek: fix using paged operations with RTL8105e / RTL8208 r8169: fix resume on cable plug-in r8169: fix jumbo configuration for RTL8168evl net: emulex: benet: indent a Kconfig depends continuation line selftests: forwarding: fix race between packet receive and tc check net: sched: fix `tc -s class show` no bstats on class with nolock subqueues net: ethernet: ti: ale: ensure vlan/mdb deleted when no members net/mlx5e: Fix build error without IPV6 selftests: pmtu: use -oneline for ip route list cache tipc: fix duplicate SYN messages under link congestion tipc: fix wrong timeout input for tipc_wait_for_cond() tipc: fix wrong socket reference counter after tipc_sk_timeout() returns tipc: fix potential memory leak in __tipc_sendmsg() net: macb: add missed tasklet_kill selftests: bpf: correct perror strings selftests: bpf: test_sockmap: handle file creation failures gracefully net/tls: use sg_next() to walk sg entries net/tls: remove the dead inplace_crypto code ...

Linus Torvalds committed 6 years ago

Commit c3bfc5d2 parents e5b3fc1 c5d728124 files · +254 −134Browse files

Showing the changes to include/linux (1 of 24 files). Show all

Unified · Split

include/linux/skmsg.h+14−14
@@ -14,6 +14,7 @@ · 13 unmodified lines
1414 #include <net/strparser.h>
1515
1616 #define MAX_MSG_FRAGS MAX_SKB_FRAGS
17+#define NR_MSG_FRAG_IDS (MAX_MSG_FRAGS + 1)
1718
1819 enum __sk_action {
1920 __SK_DROP = 0,
@@ -29,13 +30,15 @@ struct sk_msg_sg { · 9 unmodified lines
2930 u32 size;
3031 u32 copybreak;
3132 unsigned long copy;
32− /* The extra element is used for chaining the front and sections when
33− * the list becomes partitioned (e.g. end < start). The crypto APIs
34− * require the chaining.
33+ /* The extra two elements:
34+ * 1) used for chaining the front and sections when the list becomes
35+ * partitioned (e.g. end < start). The crypto APIs require the
36+ * chaining;
37+ * 2) to chain tailer SG entries after the message.
3538 */
36− struct scatterlist data[MAX_MSG_FRAGS + 1];
39+ struct scatterlist data[MAX_MSG_FRAGS + 2];
3740 };
38−static_assert(BITS_PER_LONG >= MAX_MSG_FRAGS);
41+static_assert(BITS_PER_LONG >= NR_MSG_FRAG_IDS);
3942
4043 /* UAPI in filter.c depends on struct sk_msg_sg being first element. */
4144 struct sk_msg {
@@ -142,13 +145,13 @@ static inline void sk_msg_apply_bytes(struct sk_psock *psock, u32 bytes) · 100 unmodified lines
142145
143146 static inline u32 sk_msg_iter_dist(u32 start, u32 end)
144147 {
145− return end >= start ? end - start : end + (MAX_MSG_FRAGS - start);
148+ return end >= start ? end - start : end + (NR_MSG_FRAG_IDS - start);
146149 }
147150
148151 #define sk_msg_iter_var_prev(var) \
149152 do { \
150153 if (var == 0) \
151− var = MAX_MSG_FRAGS - 1; \
154+ var = NR_MSG_FRAG_IDS - 1; \
152155 else \
153156 var--; \
154157 } while (0)
@@ -156,7 +159,7 @@ static inline u32 sk_msg_iter_dist(u32 start, u32 end) · 1 unmodified line
156159 #define sk_msg_iter_var_next(var) \
157160 do { \
158161 var++; \
159− if (var == MAX_MSG_FRAGS) \
162+ if (var == NR_MSG_FRAG_IDS) \
160163 var = 0; \
161164 } while (0)
162165
@@ -173,9 +176,9 @@ static inline void sk_msg_clear_meta(struct sk_msg *msg) · 10 unmodified lines
173176
174177 static inline void sk_msg_init(struct sk_msg *msg)
175178 {
176− BUILD_BUG_ON(ARRAY_SIZE(msg->sg.data) - 1 != MAX_MSG_FRAGS);
179+ BUILD_BUG_ON(ARRAY_SIZE(msg->sg.data) - 1 != NR_MSG_FRAG_IDS);
177180 memset(msg, 0, sizeof(*msg));
178− sg_init_marker(msg->sg.data, MAX_MSG_FRAGS);
181+ sg_init_marker(msg->sg.data, NR_MSG_FRAG_IDS);
179182 }
180183
181184 static inline void sk_msg_xfer(struct sk_msg *dst, struct sk_msg *src,
@@ -196,14 +199,11 @@ static inline void sk_msg_xfer_full(struct sk_msg *dst, struct sk_msg *src) · 14 unmodified lines
196199
197200 static inline bool sk_msg_full(const struct sk_msg *msg)
198201 {
199− return (msg->sg.end == msg->sg.start) && msg->sg.size;
202+ return sk_msg_iter_dist(msg->sg.start, msg->sg.end) == MAX_MSG_FRAGS;
200203 }
201204
202205 static inline u32 sk_msg_elem_used(const struct sk_msg *msg)
203206 {
204− if (sk_msg_full(msg))
205− return MAX_MSG_FRAGS;
206−
207207 return sk_msg_iter_dist(msg->sg.start, msg->sg.end);
208208 }
209209

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t