On 12/14/2018 06:03 PM, Martin Lau wrote: > On Thu, Dec 13, 2018 at 10:44:57PM +0100, Andrea Claudi wrote: >> bytes is initialized to end - start at the beginning of this function, >> and is never changed. Remove it making the code a bit more readable. >> >> Suggested-by: Stefano Brivio <sbri...@redhat.com> >> Signed-off-by: Andrea Claudi <acla...@redhat.com> > The change looks correct. > I found the original code more intuitive to read though. > Daniel/John, thoughts?
Change is correct, but I kind of agree with Martin that it seems to make it slightly less intuitive to follow the logic. Probably just personal preference. I think the change is mainly about the first part since 'msg->data + bytes' is perhaps slightly more obvious than 'msg->data + end - start', so that second chunk was kind of a necessity due to getting rid of bytes var. The first part is on finding the right scatterlist ring entry based on the user provided data /start/. And the /offset/ is the accumulation of the sg entries in the skmsg we needed to walk to get to this point. So the /start - offset/ is the headroom of the last skmsg entry. This and /bytes/ is needed for checking whether it's single or multi skmsg element. 'end - offset' feels a bit less intuitive to follow here given the previous logic. Thanks, Daniel >> --- >> net/core/filter.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/net/core/filter.c b/net/core/filter.c >> index aa274679965d..f31a0de14216 100644 >> --- a/net/core/filter.c >> +++ b/net/core/filter.c >> @@ -2170,8 +2170,8 @@ static const struct bpf_func_proto >> bpf_msg_cork_bytes_proto = { >> BPF_CALL_4(bpf_msg_pull_data, struct sk_msg *, msg, u32, start, >> u32, end, u64, flags) >> { >> - u32 len = 0, offset = 0, copy = 0, poffset = 0, bytes = end - start; >> u32 first_sge, last_sge, i, shift, bytes_sg_total; >> + u32 len = 0, offset = 0, copy = 0, poffset = 0; >> struct scatterlist *sge; >> u8 *raw, *to, *from; >> struct page *page; >> @@ -2196,7 +2196,7 @@ BPF_CALL_4(bpf_msg_pull_data, struct sk_msg *, msg, >> u32, start, >> /* The start may point into the sg element so we need to also >> * account for the headroom. >> */ >> - bytes_sg_total = start - offset + bytes; >> + bytes_sg_total = end - offset; >> if (!msg->sg.copy[i] && bytes_sg_total <= len) >> goto out; >> >> @@ -2279,7 +2279,7 @@ BPF_CALL_4(bpf_msg_pull_data, struct sk_msg *, msg, >> u32, start, >> msg->sg.end - shift; >> out: >> msg->data = sg_virt(&msg->sg.data[first_sge]) + start - offset; >> - msg->data_end = msg->data + bytes; >> + msg->data_end = msg->data + end - start; >> return 0; >> } >> >> -- >> 2.19.2