cluster_alloc_swap_entry() may change per-cpu cluster of another CPU randomly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Kairui,

When reading new swap cluster allocation code.  Sorry, I didn't find
time to review your patch at the first place.  I found that in
cluster_alloc_swap_entry(), the following code path is possible,

  cluster = this_cpu_ptr(si->percpu_cluster);
  offset = alloc_swap_scan_cluster();
    ...
      spin_unlock(&ci->lock);
      spin_unlock(&si->lock);
      /* migrate to another cpu */
      spin_lock(&ci->lock);
      spin_lock(&si->lock);
  cluster->next[order] = offset;

That is, the per cpu cluster of a CPU may be changed on another CPU.  I
guess that this will not cause some functionality issue.  However, this
makes code harder to be reasoned.  Is it possible to avoid unlock before
changing per cpu cluster?  Or, give up updating per cpu cluster if we
need to unlock.

--
Best Regards,
Huang, Ying




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux