{"object_kind":"push","event_name":"push","before":"ad03901688852e43eb4adcb02406b2d611fa069d","after":"f772ae0108d80741c485a3847793cf1a5d6c4e1a","ref":"refs/heads/main","ref_protected":false,"checkout_sha":"f772ae0108d80741c485a3847793cf1a5d6c4e1a","message":null,"user_id":94502,"user_name":"Jan Vaclav","user_username":"jvaclav","user_email":"[REDACTED]","user_avatar":"https://secure.gravatar.com/avatar/b4321a238083708fc05db8fc526ee46603f27da35f493d6f98ed8125c3b8855f?s=80&d=identicon","project_id":411,"project":{"id":411,"name":"NetworkManager","description":"NetworkManager — network management daemon","web_url":"https://gitlab.freedesktop.org/NetworkManager/NetworkManager","avatar_url":"https://gitlab.freedesktop.org/uploads/-/system/project/avatar/411/nm_logo.png?v=1791458713","git_ssh_url":"git@ssh.gitlab.freedesktop.org:NetworkManager/NetworkManager.git","git_http_url":"https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git","namespace":"NetworkManager","visibility_level":20,"path_with_namespace":"NetworkManager/NetworkManager","default_branch":"main","ci_config_path":"","homepage":"https://gitlab.freedesktop.org/NetworkManager/NetworkManager","url":"git@ssh.gitlab.freedesktop.org:NetworkManager/NetworkManager.git","ssh_url":"git@ssh.gitlab.freedesktop.org:NetworkManager/NetworkManager.git","http_url":"https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git"},"commits":[{"id":"f772ae0108d80741c485a3847793cf1a5d6c4e1a","message":"device: keep device alive while applying queued state\n\nA crash was observed during an ACTIVATED -> UNMANAGED transition with\nreason unmanaged-external-down on an externally created VRF being\nremoved and recreated.\n\nThe external-down unmanaged flag is set before the queued transition\nruns. If the manager removes the device before the callback executes,\nremove_device() sees it as already unmanaged and can release its\nreference without changing the device state. The active connection\ncan then be the device's last owner.\n\nWhen queued_state_set() applies the transition, _set_state_full()\nemits STATE_CHANGED. NMActRequest handles the UNMANAGED state by\nsetting the active connection to DEACTIVATED, which releases its\ndevice reference in _device_cleanup(). The device can therefore be\nfinalized while the queued callback is executing.\n\n_set_state_full() continues accessing the device after signal\nemission. In the reported crash, removing the in-state-change pending\naction reached strcmp() with a freed pending-action array.\nqueued_state_set() also accesses the device after the transition\nreturns to remove its own pending action.\n\nHold a reference in queued_state_set() for the entire callback,\ncovering both the state transition and pending-action removal.\n\nResolves: https://redhat.atlassian.net/browse/RHEL-260389\nFixes: fcc441622ae2 ('core: add generic queued state transitions')\n\nhttps://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2560\n","title":"device: keep device alive while applying queued state","timestamp":"2026-10-08T13:25:10+02:00","url":"https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/commit/f772ae0108d80741c485a3847793cf1a5d6c4e1a","author":{"name":"Jan Vaclav","email":"jvaclav@redhat.com"},"added":[],"modified":["src/core/devices/nm-device.c"],"removed":[]}],"total_commits_count":1,"push_options":{},"repository":{"name":"NetworkManager","url":"git@ssh.gitlab.freedesktop.org:NetworkManager/NetworkManager.git","description":"NetworkManager — network management daemon","homepage":"https://gitlab.freedesktop.org/NetworkManager/NetworkManager","git_http_url":"https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git","git_ssh_url":"git@ssh.gitlab.freedesktop.org:NetworkManager/NetworkManager.git","visibility_level":20}}