Commit 20c399e
committed
fix: kext: sysfs_vfsops: stop advertising MNT_RDONLY
Mounting sysfs put coreservicesd into a crash loop, which is the real
cause of the long-standing "system gradually stops responding" symptom:
typing stalls, applications refusing to launch, an unresponsive Dock,
and eventually nothing opening at all.
CoreServices aborts while registering the mount in its volume universe:
_CSAbortWithMessage <- FSNode_VolumeMounted
<- FSNodeServer_SyncSystemUniverseInternal
<- FileIDTreeServerGetVRefNumForDeviceInternal
coreservicesd relaunches, re-syncs, hits the mount again and re-aborts,
taking Launch Services down with it. loginwindow's black screen at login
is the same abort reached earlier in boot, so mounting after login only
moved the symptom.
None of this was visible from the kernel side, which is why it resisted
diagnosis for so long: the abort is in userspace, provoked by the mount
merely existing. A full system spindump taken while /sys was mounted
contained zero sysfs frames, and the vnop/vfs counters stayed flat across
hangs. With /sys unmounted, no new coreservicesd crash reports appear.
MNT_RDONLY is isolated as the offender by the two synthetic filesystems
that never trigger the abort: procfs mounts MNT_LOCAL without it, devfs
mounts MNT_LOCAL|MNT_DONTBROWSE without it. MNT_DONTBROWSE is kept - it
is safe, and it is still needed to keep Spotlight from indexing the live
IORegistry tree under /sys/devices.
Read-only behaviour is unchanged. This filesystem registers no write,
create, mkdir or setattr vnop, so every mutating operation already falls
through to sysfs_vnop_default() and returns ENOTSUP; MNT_RDONLY only
asked VFS to reject those same operations one layer earlier.1 parent 8c5264e commit 20c399e
2 files changed
Lines changed: 35 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
165 | 165 | | |
166 | 166 | | |
167 | 167 | | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
172 | 197 | | |
173 | 198 | | |
174 | 199 | | |
| |||
181 | 206 | | |
182 | 207 | | |
183 | 208 | | |
184 | | - | |
| 209 | + | |
185 | 210 | | |
186 | 211 | | |
187 | 212 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
179 | | - | |
180 | | - | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
181 | 184 | | |
182 | 185 | | |
183 | 186 | | |
| |||
0 commit comments