···197197static bool pcpu_chunk_page_occupied(struct pcpu_chunk *chunk,198198 int page_idx)199199{200200- return *pcpu_chunk_pagep(chunk, 0, page_idx) != NULL;200200+ /*201201+ * Any possible cpu id can be used here, so there's no need to202202+ * worry about preemption or cpu hotplug.203203+ */204204+ return *pcpu_chunk_pagep(chunk, raw_smp_processor_id(),205205+ page_idx) != NULL;201206}202207203208/* set the pointer to a chunk in a page struct */···302297 return pcpu_first_chunk;303298 }304299300300+ /*301301+ * The address is relative to unit0 which might be unused and302302+ * thus unmapped. Offset the address to the unit space of the303303+ * current processor before looking it up in the vmalloc304304+ * space. Note that any possible cpu id can be used here, so305305+ * there's no need to worry about preemption or cpu hotplug.306306+ */307307+ addr += raw_smp_processor_id() * pcpu_unit_size;305308 return pcpu_get_page_chunk(vmalloc_to_page(addr));306309}307310