Skip to content

fix(udevadm): propagate return code from verb result - #429

Open
deepin-ci-robot wants to merge 1 commit into
deepin-community:masterfrom
deepin-ci-robot:backport/fix-udevadm-propagate-verb-return-code
Open

fix(udevadm): propagate return code from verb result#429
deepin-ci-robot wants to merge 1 commit into
deepin-community:masterfrom
deepin-ci-robot:backport/fix-udevadm-propagate-verb-return-code

Conversation

@deepin-ci-robot

Copy link
Copy Markdown
Contributor

Problem Before the Change

udevadm did not propagate the return code of its verbs to the process exit status. When running udevadm lock <cmd>, a non-zero exit code of the wrapped command (or a failing lock operation) was silently swallowed, so udevadm still exited with success. Callers relying on udevadm's exit status for device concurrency control and readiness checks could misjudge the state, leading to race conditions and inconsistent device node state.

What This PR Changes

Backport of upstream systemd commit e6bca1829657 ("udevadm: Propagate return code from verb result", PR #30658):

  • src/udev/udevadm.c: switch the main function to DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE() so the verb's return code is propagated as the process exit status instead of being clamped to success.
  • src/udev/udevadm-test-builtin.c: make udevadm test-builtin bail out via goto finish when the builtin fails, so the error is no longer masked.
  • test/units/testsuite-17.10.sh: add test coverage asserting that udevadm lock returns the wrapped command's exit code.
  • test/units/testsuite-64.sh: initialize partition tables through udevadm lock in the test loop.

Problem Solved After the Change

udevadm lock and other verbs now correctly return the underlying command's exit code: udevadm lock --device <dev> true succeeds while udevadm lock --device <dev> false fails. Scripts and systemd components can rely on udevadm's exit status for locking and readiness, preventing state misjudgment under concurrent device access.

Changes

  • Add debian/patches/fix-udevadm-propagate-verb-return-code.patch
  • Modify debian/patches/series
  • Modify debian/changelog

Upstream

systemd/systemd@e6bca1829657 (PR #30658)

Generated-By: glm-5.3-flash
Co-Authored-By: deepin-ci-robot packages@deepin.org

udevadm swallowed the exit status of the command executed by its verbs:
a failing lock operation's return code was silently discarded, so
`udevadm lock <cmd>` returned success even when the underlying command
(or the locking itself) failed. Propagate the verb's return code to the
process exit status by switching the main function to
DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE(), and make
`udevadm test-builtin` bail out when the builtin fails instead of
masking the error. Add test coverage for `udevadm lock` exit codes.

Changes:
  - Add debian/patches/fix-udevadm-propagate-verb-return-code.patch
  - Modify debian/patches/series
  - Modify debian/changelog

Upstream: systemd/systemd@e6bca18

Generated-By: glm-5.3-flash
Co-Authored-By: deepin-ci-robot <packages@deepin.org>
@deepin-ci-robot

Copy link
Copy Markdown
Contributor Author

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign yukarichiba for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

TAG Bot

TAG: 255.2-4deepin68
EXISTED: no
DISTRIBUTION: unstable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant