mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Hold d.parent.mu when reading d.name
PiperOrigin-RevId: 203041657 Change-Id: I120783d91712818e600505454c9276f8d9877f37
This commit is contained in:
@@ -1342,7 +1342,15 @@ func (d *Dirent) InotifyEvent(events, cookie uint32) {
|
||||
|
||||
// The ordering below is important, Linux always notifies the parent first.
|
||||
if d.parent != nil {
|
||||
d.parent.Inode.Watches.Notify(d.name, events, cookie)
|
||||
// name is immediately stale w.r.t. renames (renameMu doesn't
|
||||
// protect against renames in the same directory). Holding
|
||||
// d.parent.mu around Notify() wouldn't matter since Notify
|
||||
// doesn't provide a synchronous mechanism for reading the name
|
||||
// anyway.
|
||||
d.parent.mu.Lock()
|
||||
name := d.name
|
||||
d.parent.mu.Unlock()
|
||||
d.parent.Inode.Watches.Notify(name, events, cookie)
|
||||
}
|
||||
d.Inode.Watches.Notify("", events, cookie)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user