[PATCH v6 0/5] liveupdate: serialization safety and race fixes

Pasha Tatashin posted 5 patches 2 days, 22 hours ago
kernel/kexec_core.c              |  8 ++--
kernel/liveupdate/luo_file.c     |  5 ++-
kernel/liveupdate/luo_internal.h |  2 -
kernel/liveupdate/luo_session.c  | 67 +++++++++++++++++++++++++++-----
4 files changed, 66 insertions(+), 16 deletions(-)
[PATCH v6 0/5] liveupdate: serialization safety and race fixes
Posted by Pasha Tatashin 2 days, 22 hours ago
This series addresses several issues related to the synchronization
between the reboot process and LUO session management.

1. Skip LUO serialization for context-preserving kexec: A
preserve_context kexec returns to the current kernel, which is unrelated
to live update where state is passed to the next kernel. Skipping
serialization avoids unnecessary work and prevents sessions from being
left in a frozen state upon return.

2. Fix TOCTOU race in luo_session_retrieve(): Extend the rwsem lock
scope to prevent a session from being released between lookup and
mutex acquisition.

3. Block session mutations during reboot: During the reboot() syscall,
user processes may still be running concurrently and attempting to
mutate sessions. To prevent this, we introduce luo_session_serialize_rwsem.
All mutation operations (create, retrieve, release, ioctl) hold the
read lock. The serialization process holds the write lock indefinitely
on success, effectively freezing the subsystem.

4. Fix use-after-free in luo_file_unpreserve_files(): Reorder module_put()
to ensure the file handler module remains pinned while its operations
are being accessed during cleanup.

5. Remove unused ser field from struct luo_session: Clean up the
session structure by removing a field that was never utilized.

Tree: git.kernel.org/pub/scm/linux/kernel/git/tatashin/linux.git Branch:
luo-reboot-sync/v6

Changes in v6:
- Added lock hierarchy documentation (Pratyush)
- Collected Reviewed-by from Pratyush Yadav for patches #2, #4, and #5.

Pasha Tatashin (5):
  liveupdate: skip serialization for context-preserving kexec
  liveupdate: fix TOCTOU race in luo_session_retrieve()
  liveupdate: block session mutations during reboot
  liveupdate: fix u-a-f in luo_file_unpreserve_files() and
    luo_file_finish()
  liveupdate: Remove unused ser field from struct luo_session

 kernel/kexec_core.c              |  8 ++--
 kernel/liveupdate/luo_file.c     |  5 ++-
 kernel/liveupdate/luo_internal.h |  2 -
 kernel/liveupdate/luo_session.c  | 67 +++++++++++++++++++++++++++-----
 4 files changed, 66 insertions(+), 16 deletions(-)


base-commit: 3a29a9841f4bfb79840f7d1f8115cc7b25e744e3
-- 
2.53.0
Re: [PATCH v6 0/5] liveupdate: serialization safety and race fixes
Posted by Mike Rapoport 2 days, 3 hours ago
From: Mike Rapoport (Microsoft) <rppt@kernel.org>

On Wed, 27 May 2026 20:27:32 +0000, Pasha Tatashin wrote:
> This series addresses several issues related to the synchronization
> between the reboot process and LUO session management.
> 
> 1. Skip LUO serialization for context-preserving kexec: A
> preserve_context kexec returns to the current kernel, which is unrelated
> to live update where state is passed to the next kernel. Skipping
> serialization avoids unnecessary work and prevents sessions from being
> left in a frozen state upon return.
> 
> [...]

Applied to next branch of liveupdate/linux.git tree, thanks!

[1/5] liveupdate: skip serialization for context-preserving kexec
      commit: ef4448795cf193b2828019978d872bc0d301abe4
[2/5] liveupdate: fix TOCTOU race in luo_session_retrieve()
      commit: aedeca39112a2bee13e54097fbb98896010f375f
[3/5] liveupdate: block session mutations during reboot
      commit: 6f070471ce4fc9084165b77bfd7457ef85dc8c8c
[4/5] liveupdate: fix u-a-f in luo_file_unpreserve_files() and luo_file_finish()
      commit: 051c2ed7b42077c511654261f5efb52ab368817f
[5/5] liveupdate: Remove unused ser field from struct luo_session
      commit: 5428435567cbe06c19914592fc22ca23c9ca1de5

tree: https://git.kernel.org/pub/scm/linux/kernel/git/liveupdate/linux
branch: next

--
Sincerely yours,
Mike.