mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 22:52:19 +02:00
bcachefs: Fix bch2_dev_lookup() refcounting
bch2_dev_lookup() is supposed to take a ref on the device it returns, but for_each_member_device() takes refs as it iterates, for_each_member_device_rcu() does not. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
1267df40ac
commit
3a2d025927
|
|
@ -2004,13 +2004,9 @@ int bch2_dev_resize(struct bch_fs *c, struct bch_dev *ca, u64 nbuckets)
|
|||
/* return with ref on ca->ref: */
|
||||
struct bch_dev *bch2_dev_lookup(struct bch_fs *c, const char *name)
|
||||
{
|
||||
rcu_read_lock();
|
||||
for_each_member_device_rcu(c, ca, NULL)
|
||||
if (!strcmp(name, ca->name)) {
|
||||
rcu_read_unlock();
|
||||
for_each_member_device(c, ca)
|
||||
if (!strcmp(name, ca->name))
|
||||
return ca;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return ERR_PTR(-BCH_ERR_ENOENT_dev_not_found);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user