Commit 4ca0d989 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'erofs-for-6.8-rc6-fixes' of git://git.kernel.org/pub/scm/linux/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
parents 66a97c2e 56ee7db3
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -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 (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;
			} else {
				erofs_put_metabuf(&buf);

				back = mid - 1;
				endprfx = matched;
			}
			continue;
		}
out:		/* free if the candidate is valid */