Skip to content

Commit

Permalink
Merge tag 'erofs-for-6.8-rc6-fixes' of git://git.kernel.org/pub/scm/l…
Browse files Browse the repository at this point in the history
…inux/kernel/git/xiang/erofs

Pull erofs fix from Gao Xiang:

 - Fix page refcount leak when looking up specific inodes
   introduced by metabuf reworking

* tag 'erofs-for-6.8-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
  erofs: fix refcount on the metabuf used for inode lookup
  • Loading branch information
torvalds committed Feb 25, 2024
2 parents 66a97c2 + 56ee7db commit 4ca0d98
Showing 1 changed file with 14 additions and 14 deletions.
28 changes: 14 additions & 14 deletions fs/erofs/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,24 +130,24 @@ static void *erofs_find_target_block(struct erofs_buf *target,
/* string comparison without already matched prefix */
diff = erofs_dirnamecmp(name, &dname, &matched);

if (!diff) {
*_ndirents = 0;
goto out;
} else if (diff > 0) {
head = mid + 1;
startprfx = matched;

if (!IS_ERR(candidate))
erofs_put_metabuf(target);
*target = buf;
candidate = de;
*_ndirents = ndirents;
} else {
if (diff < 0) {
erofs_put_metabuf(&buf);

back = mid - 1;
endprfx = matched;
continue;
}

if (!IS_ERR(candidate))
erofs_put_metabuf(target);
*target = buf;
if (!diff) {
*_ndirents = 0;
return de;
}
head = mid + 1;
startprfx = matched;
candidate = de;
*_ndirents = ndirents;
continue;
}
out: /* free if the candidate is valid */
Expand Down

0 comments on commit 4ca0d98

Please sign in to comment.