On Wed, Jan 6, 2021 at 9:11 PM Willem de Bruijn [off-list ref] wrote:
On Wed, Jan 6, 2021 at 8:49 PM Jakub Kicinski [off-list ref] wrote:
quoted
On Wed, 6 Jan 2021 17:03:48 -0800 Linus Torvalds wrote:
quoted
I wonder whether there is other code that "knows" about kmap() only
affecting PageHighmem() pages thing that is no longer true.
Looking at some other code, skb_gro_reset_offset() looks suspiciously
like it also thinks highmem pages are special.
Adding the networking people involved in this area to the cc too.
But there are three other kmap_atomic callers under net/ that do not
loop at all, so assume non-compound pages. In esp_output_head,
esp6_output_head and skb_seq_read. The first two directly use
skb_page_frag_refill, which can allocate compound (but not
__GFP_HIGHMEM) pages, and the third can be inserted with
netfilter xt_string in the path of tcp transmit skbs, which can also
have compound pages. I think that these could similarly access
data beyond the end of the kmap_atomic mapped page. I'll take
a closer look.