commit | 15a2015fbc692e1c97d7ce12d96e077f5ae7ea6d | [log] [tgz] |
---|---|---|
author | Sage Weil <sage@newdream.net> | Sat Nov 05 22:06:31 2011 -0700 |
committer | Sage Weil <sage@newdream.net> | Sat Nov 05 22:06:31 2011 -0700 |
tree | f902cc2b7cab475c8b220147bb786dc3a772888e | |
parent | 0c6d4b4e22a513f8563a2e00c5ab08e9f8796272 [diff] |
ceph: fix iput race when queueing inode work If we queue a work item that calls iput(), make sure we ihold() before attempting to queue work. Otherwise our queued work might miraculously run before we notice the queue_work() succeeded and call ihold(), allowing the inode to be destroyed. That is, instead of if (queue_work(...)) ihold(); we need to do ihold(); if (!queue_work(...)) iput(); Reported-by: Amon Ott <a.ott@m-privacy.de> Signed-off-by: Sage Weil <sage@newdream.net>