Loading net/core/datagram.c +83 −95 Original line number Diff line number Diff line Loading @@ -282,6 +282,7 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, { int start = skb_headlen(skb); int i, copy = start - offset; struct sk_buff *frag_iter; /* Copy header. */ if (copy > 0) { Loading Loading @@ -322,19 +323,16 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, start = end; } if (skb_shinfo(skb)->frag_list) { struct sk_buff *list = skb_shinfo(skb)->frag_list; for (; list; list = list->next) { skb_walk_frags(skb, frag_iter) { int end; WARN_ON(start > offset + len); end = start + list->len; end = start + frag_iter->len; if ((copy = end - offset) > 0) { if (copy > len) copy = len; if (skb_copy_datagram_iovec(list, if (skb_copy_datagram_iovec(frag_iter, offset - start, to, copy)) goto fault; Loading @@ -344,7 +342,6 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, } start = end; } } if (!len) return 0; Loading @@ -369,6 +366,7 @@ int skb_copy_datagram_const_iovec(const struct sk_buff *skb, int offset, { int start = skb_headlen(skb); int i, copy = start - offset; struct sk_buff *frag_iter; /* Copy header. */ if (copy > 0) { Loading Loading @@ -411,19 +409,16 @@ int skb_copy_datagram_const_iovec(const struct sk_buff *skb, int offset, start = end; } if (skb_shinfo(skb)->frag_list) { struct sk_buff *list = skb_shinfo(skb)->frag_list; for (; list; list = list->next) { skb_walk_frags(skb, frag_iter) { int end; WARN_ON(start > offset + len); end = start + list->len; end = start + frag_iter->len; if ((copy = end - offset) > 0) { if (copy > len) copy = len; if (skb_copy_datagram_const_iovec(list, if (skb_copy_datagram_const_iovec(frag_iter, offset - start, to, to_offset, copy)) Loading @@ -435,7 +430,6 @@ int skb_copy_datagram_const_iovec(const struct sk_buff *skb, int offset, } start = end; } } if (!len) return 0; Loading @@ -461,6 +455,7 @@ int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset, { int start = skb_headlen(skb); int i, copy = start - offset; struct sk_buff *frag_iter; /* Copy header. */ if (copy > 0) { Loading Loading @@ -506,19 +501,16 @@ int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset, start = end; } if (skb_shinfo(skb)->frag_list) { struct sk_buff *list = skb_shinfo(skb)->frag_list; for (; list; list = list->next) { skb_walk_frags(skb, frag_iter) { int end; WARN_ON(start > offset + len); end = start + list->len; end = start + frag_iter->len; if ((copy = end - offset) > 0) { if (copy > len) copy = len; if (skb_copy_datagram_from_iovec(list, if (skb_copy_datagram_from_iovec(frag_iter, offset - start, from, from_offset, Loading @@ -531,7 +523,6 @@ int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset, } start = end; } } if (!len) return 0; Loading @@ -545,8 +536,9 @@ static int skb_copy_and_csum_datagram(const struct sk_buff *skb, int offset, __wsum *csump) { int start = skb_headlen(skb); int pos = 0; int i, copy = start - offset; struct sk_buff *frag_iter; int pos = 0; /* Copy header. */ if (copy > 0) { Loading Loading @@ -597,20 +589,17 @@ static int skb_copy_and_csum_datagram(const struct sk_buff *skb, int offset, start = end; } if (skb_shinfo(skb)->frag_list) { struct sk_buff *list = skb_shinfo(skb)->frag_list; for (; list; list=list->next) { skb_walk_frags(skb, frag_iter) { int end; WARN_ON(start > offset + len); end = start + list->len; end = start + frag_iter->len; if ((copy = end - offset) > 0) { __wsum csum2 = 0; if (copy > len) copy = len; if (skb_copy_and_csum_datagram(list, if (skb_copy_and_csum_datagram(frag_iter, offset - start, to, copy, &csum2)) Loading @@ -624,7 +613,6 @@ static int skb_copy_and_csum_datagram(const struct sk_buff *skb, int offset, } start = end; } } if (!len) return 0; Loading Loading
net/core/datagram.c +83 −95 Original line number Diff line number Diff line Loading @@ -282,6 +282,7 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, { int start = skb_headlen(skb); int i, copy = start - offset; struct sk_buff *frag_iter; /* Copy header. */ if (copy > 0) { Loading Loading @@ -322,19 +323,16 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, start = end; } if (skb_shinfo(skb)->frag_list) { struct sk_buff *list = skb_shinfo(skb)->frag_list; for (; list; list = list->next) { skb_walk_frags(skb, frag_iter) { int end; WARN_ON(start > offset + len); end = start + list->len; end = start + frag_iter->len; if ((copy = end - offset) > 0) { if (copy > len) copy = len; if (skb_copy_datagram_iovec(list, if (skb_copy_datagram_iovec(frag_iter, offset - start, to, copy)) goto fault; Loading @@ -344,7 +342,6 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, } start = end; } } if (!len) return 0; Loading @@ -369,6 +366,7 @@ int skb_copy_datagram_const_iovec(const struct sk_buff *skb, int offset, { int start = skb_headlen(skb); int i, copy = start - offset; struct sk_buff *frag_iter; /* Copy header. */ if (copy > 0) { Loading Loading @@ -411,19 +409,16 @@ int skb_copy_datagram_const_iovec(const struct sk_buff *skb, int offset, start = end; } if (skb_shinfo(skb)->frag_list) { struct sk_buff *list = skb_shinfo(skb)->frag_list; for (; list; list = list->next) { skb_walk_frags(skb, frag_iter) { int end; WARN_ON(start > offset + len); end = start + list->len; end = start + frag_iter->len; if ((copy = end - offset) > 0) { if (copy > len) copy = len; if (skb_copy_datagram_const_iovec(list, if (skb_copy_datagram_const_iovec(frag_iter, offset - start, to, to_offset, copy)) Loading @@ -435,7 +430,6 @@ int skb_copy_datagram_const_iovec(const struct sk_buff *skb, int offset, } start = end; } } if (!len) return 0; Loading @@ -461,6 +455,7 @@ int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset, { int start = skb_headlen(skb); int i, copy = start - offset; struct sk_buff *frag_iter; /* Copy header. */ if (copy > 0) { Loading Loading @@ -506,19 +501,16 @@ int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset, start = end; } if (skb_shinfo(skb)->frag_list) { struct sk_buff *list = skb_shinfo(skb)->frag_list; for (; list; list = list->next) { skb_walk_frags(skb, frag_iter) { int end; WARN_ON(start > offset + len); end = start + list->len; end = start + frag_iter->len; if ((copy = end - offset) > 0) { if (copy > len) copy = len; if (skb_copy_datagram_from_iovec(list, if (skb_copy_datagram_from_iovec(frag_iter, offset - start, from, from_offset, Loading @@ -531,7 +523,6 @@ int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset, } start = end; } } if (!len) return 0; Loading @@ -545,8 +536,9 @@ static int skb_copy_and_csum_datagram(const struct sk_buff *skb, int offset, __wsum *csump) { int start = skb_headlen(skb); int pos = 0; int i, copy = start - offset; struct sk_buff *frag_iter; int pos = 0; /* Copy header. */ if (copy > 0) { Loading Loading @@ -597,20 +589,17 @@ static int skb_copy_and_csum_datagram(const struct sk_buff *skb, int offset, start = end; } if (skb_shinfo(skb)->frag_list) { struct sk_buff *list = skb_shinfo(skb)->frag_list; for (; list; list=list->next) { skb_walk_frags(skb, frag_iter) { int end; WARN_ON(start > offset + len); end = start + list->len; end = start + frag_iter->len; if ((copy = end - offset) > 0) { __wsum csum2 = 0; if (copy > len) copy = len; if (skb_copy_and_csum_datagram(list, if (skb_copy_and_csum_datagram(frag_iter, offset - start, to, copy, &csum2)) Loading @@ -624,7 +613,6 @@ static int skb_copy_and_csum_datagram(const struct sk_buff *skb, int offset, } start = end; } } if (!len) return 0; Loading