Fuse: `DeviceFD.Read`: Lock `DeviceFD` ahead of other locks.
Fuse: `DeviceFD.Read`: Lock `DeviceFD` ahead of other locks.

Syzkaller reports a "unlocking an unlocked mutex" here:
https://github.com/google/gvisor/blob/a5ce865145c718f26c7a8f305f6c8262e992051c/pkg/sentry/fsimpl/fuse/dev.go#L154
... which can only happen if `fd.fs` changes in the middle. By locking
`DeviceFD` earlier, we follow the lock ordering specified in
https://github.com/google/gvisor/blob/a5ce865145c718f26c7a8f305f6c8262e992051c/pkg/sentry/fsimpl/fuse/connection.go#L42
hopefully fixing the issue.

Reported-by: fafe235982ea9629cfafee7e9d4e9dd8fdad5ae1@syzkaller.appspotmail.com
PiperOrigin-RevId: 426288804

google/gvisor,google/gvisor,google/gvisor,google/gvisor,google/gvisor,google/gvisor,google/gvisor,google/gvisor