From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tushar Dave Subject: [PATCH bpf] bpf: use __GFP_COMP while allocating page Date: Wed, 12 Sep 2018 22:15:29 +0200 Message-ID: <1536783329-784-1-git-send-email-tushar.n.dave@oracle.com> To: ast@kernel.org, daniel@iogearbox.net, davem@davemloft.net, netdev@vger.kernel.org, john.fastabend@gmail.com Return-path: Received: from userp2120.oracle.com ([156.151.31.85]:57568 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726750AbeIMBWR (ORCPT ); Wed, 12 Sep 2018 21:22:17 -0400 Sender: netdev-owner@vger.kernel.org List-ID: Helper bpg_msg_pull_data() can allocate multiple pages while linearizing multiple scatterlist elements into one shared page. However, if the shared page has size > PAGE_SIZE, using copy_page_to_iter() causes below warning. e.g. [ 6367.019832] WARNING: CPU: 2 PID: 7410 at lib/iov_iter.c:825 page_copy_sane.part.8+0x0/0x8 To avoid above warning, use __GFP_COMP while allocating multiple contiguous pages. Signed-off-by: Tushar Dave --- net/core/filter.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/core/filter.c b/net/core/filter.c index d301134..0b40f95 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -2344,7 +2344,8 @@ struct sock *do_msg_redirect_map(struct sk_msg_buff *msg) if (unlikely(bytes_sg_total > copy)) return -EINVAL; - page = alloc_pages(__GFP_NOWARN | GFP_ATOMIC, get_order(copy)); + page = alloc_pages(__GFP_NOWARN | GFP_ATOMIC | __GFP_COMP, + get_order(copy)); if (unlikely(!page)) return -ENOMEM; p = page_address(page); -- 1.8.3.1