Compare commits
No commits in common. "cdefeabd1ac33166b64e41c008840818163977ce" and "270846e403b1afaf02cd7dcb8d0ab84858f9c4cc" have entirely different histories.
cdefeabd1a
...
270846e403
@ -1,62 +0,0 @@
|
|||||||
From 127b66a4d8afc6f3dfe8929c01b1f1e63c1ebf31 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Date: Thu, 22 Feb 2024 14:04:31 -0800
|
|
||||||
Subject: xfs_db: don't hardcode 'type data' size at 512b
|
|
||||||
|
|
||||||
On a disk with 4096-byte LBAs, the xfs_db 'type data' subcommand doesn't
|
|
||||||
work:
|
|
||||||
|
|
||||||
# xfs_io -c 'sb' -c 'type data' /dev/sda
|
|
||||||
xfs_db: read failed: Invalid argument
|
|
||||||
no current object
|
|
||||||
|
|
||||||
The cause of this is the hardcoded initialization of bb_count when we're
|
|
||||||
setting type data -- it should be the filesystem sector size, not just 1.
|
|
||||||
|
|
||||||
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
|
|
||||||
Signed-off-by: Carlos Maiolino <cem@kernel.org>
|
|
||||||
---
|
|
||||||
db/block.c | 3 ++-
|
|
||||||
db/io.c | 3 ++-
|
|
||||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/db/block.c b/db/block.c
|
|
||||||
index d730c77967..22930e5a28 100644
|
|
||||||
--- a/db/block.c
|
|
||||||
+++ b/db/block.c
|
|
||||||
@@ -124,6 +124,7 @@ daddr_f(
|
|
||||||
{
|
|
||||||
int64_t d;
|
|
||||||
char *p;
|
|
||||||
+ int bb_count = BTOBB(mp->m_sb.sb_sectsize);
|
|
||||||
|
|
||||||
if (argc == 1) {
|
|
||||||
xfs_daddr_t daddr = iocur_top->off >> BBSHIFT;
|
|
||||||
@@ -144,7 +145,7 @@ daddr_f(
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
ASSERT(typtab[TYP_DATA].typnm == TYP_DATA);
|
|
||||||
- set_cur(&typtab[TYP_DATA], d, 1, DB_RING_ADD, NULL);
|
|
||||||
+ set_cur(&typtab[TYP_DATA], d, bb_count, DB_RING_ADD, NULL);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/db/io.c b/db/io.c
|
|
||||||
index 590dd1f82f..9b2c6b4cf7 100644
|
|
||||||
--- a/db/io.c
|
|
||||||
+++ b/db/io.c
|
|
||||||
@@ -652,7 +652,8 @@ void
|
|
||||||
set_iocur_type(
|
|
||||||
const typ_t *type)
|
|
||||||
{
|
|
||||||
- int bb_count = 1; /* type's size in basic blocks */
|
|
||||||
+ /* type's size in basic blocks */
|
|
||||||
+ int bb_count = BTOBB(mp->m_sb.sb_sectsize);
|
|
||||||
int boff = iocur_top->boff;
|
|
||||||
|
|
||||||
/*
|
|
||||||
--
|
|
||||||
cgit 1.2.3-korg
|
|
||||||
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
From 21dc682a3842eb7e4c79f7e511d840e708d7e757 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
|
||||||
Date: Tue, 23 Apr 2024 14:36:14 +0200
|
|
||||||
Subject: xfs_db: fix leak in flist_find_ftyp()
|
|
||||||
|
|
||||||
When count is zero fl reference is lost. Fix it by freeing the list.
|
|
||||||
|
|
||||||
Fixes: a0d79cb37a36 ("xfs_db: make flist_find_ftyp() to check for field existance on disk")
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Bill O'Donnell <bodonnel@redhat.com>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
|
||||||
---
|
|
||||||
db/flist.c | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/db/flist.c b/db/flist.c
|
|
||||||
index c81d229..0a6cc5f 100644
|
|
||||||
--- a/db/flist.c
|
|
||||||
+++ b/db/flist.c
|
|
||||||
@@ -424,8 +424,10 @@ flist_find_ftyp(
|
|
||||||
if (f->ftyp == type)
|
|
||||||
return fl;
|
|
||||||
count = fcount(f, obj, startoff);
|
|
||||||
- if (!count)
|
|
||||||
+ if (!count) {
|
|
||||||
+ flist_free(fl);
|
|
||||||
continue;
|
|
||||||
+ }
|
|
||||||
fa = &ftattrtab[f->ftyp];
|
|
||||||
if (fa->subfld) {
|
|
||||||
flist_t *nfl;
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
||||||
@ -1,101 +0,0 @@
|
|||||||
From a21daa3a739194b929de644779c359949390d467 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
|
||||||
Date: Wed, 17 Apr 2024 18:19:30 +0200
|
|
||||||
Subject: xfs_db: add helper for flist_find_type for clearer field matching
|
|
||||||
|
|
||||||
Make flist_find_type() more readable by unloading field type
|
|
||||||
matching to the helper.
|
|
||||||
|
|
||||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
---
|
|
||||||
db/flist.c | 60 ++++++++++++++++++++++++++++++++++--------------------
|
|
||||||
1 file changed, 38 insertions(+), 22 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/db/flist.c b/db/flist.c
|
|
||||||
index 0a6cc5f..ab0a0f1 100644
|
|
||||||
--- a/db/flist.c
|
|
||||||
+++ b/db/flist.c
|
|
||||||
@@ -400,6 +400,40 @@ flist_split(
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static flist_t *
|
|
||||||
+flist_field_match(
|
|
||||||
+ const field_t *field,
|
|
||||||
+ fldt_t type,
|
|
||||||
+ void *obj,
|
|
||||||
+ int startoff)
|
|
||||||
+{
|
|
||||||
+ flist_t *fl;
|
|
||||||
+ int count;
|
|
||||||
+ const ftattr_t *fa;
|
|
||||||
+ flist_t *nfl;
|
|
||||||
+
|
|
||||||
+ fl = flist_make(field->name);
|
|
||||||
+ fl->fld = field;
|
|
||||||
+ if (field->ftyp == type)
|
|
||||||
+ return fl;
|
|
||||||
+ count = fcount(field, obj, startoff);
|
|
||||||
+ if (!count)
|
|
||||||
+ goto out;
|
|
||||||
+ fa = &ftattrtab[field->ftyp];
|
|
||||||
+ if (!fa->subfld)
|
|
||||||
+ goto out;
|
|
||||||
+
|
|
||||||
+ nfl = flist_find_ftyp(fa->subfld, type, obj, startoff);
|
|
||||||
+ if (nfl) {
|
|
||||||
+ fl->child = nfl;
|
|
||||||
+ return fl;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+out:
|
|
||||||
+ flist_free(fl);
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Given a set of fields, scan for a field of the given type.
|
|
||||||
* Return an flist leading to the first found field
|
|
||||||
@@ -413,33 +447,15 @@ flist_find_ftyp(
|
|
||||||
void *obj,
|
|
||||||
int startoff)
|
|
||||||
{
|
|
||||||
- flist_t *fl;
|
|
||||||
const field_t *f;
|
|
||||||
- int count;
|
|
||||||
- const ftattr_t *fa;
|
|
||||||
+ flist_t *fl;
|
|
||||||
|
|
||||||
for (f = fields; f->name; f++) {
|
|
||||||
- fl = flist_make(f->name);
|
|
||||||
- fl->fld = f;
|
|
||||||
- if (f->ftyp == type)
|
|
||||||
+ fl = flist_field_match(f, type, obj, startoff);
|
|
||||||
+ if (fl)
|
|
||||||
return fl;
|
|
||||||
- count = fcount(f, obj, startoff);
|
|
||||||
- if (!count) {
|
|
||||||
- flist_free(fl);
|
|
||||||
- continue;
|
|
||||||
- }
|
|
||||||
- fa = &ftattrtab[f->ftyp];
|
|
||||||
- if (fa->subfld) {
|
|
||||||
- flist_t *nfl;
|
|
||||||
-
|
|
||||||
- nfl = flist_find_ftyp(fa->subfld, type, obj, startoff);
|
|
||||||
- if (nfl) {
|
|
||||||
- fl->child = nfl;
|
|
||||||
- return fl;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- flist_free(fl);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
||||||
@ -1,72 +0,0 @@
|
|||||||
From 7ea701ffc7cf306a903f2966519b3f5aedfb77ea Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eric Biggers <ebiggers@google.com>
|
|
||||||
Date: Tue, 11 Jun 2024 11:29:28 -0700
|
|
||||||
Subject: xfs_io: fix mread with length 1 mod page size
|
|
||||||
|
|
||||||
Fix a weird bug in mread where if you passed it a length that was 1
|
|
||||||
modulo the page size, for example
|
|
||||||
|
|
||||||
xfs_io -r file -c "mmap -r 0 8192" -c "mread -v 0 4097"
|
|
||||||
|
|
||||||
... it never reset its pointer into the buffer into which it copies the
|
|
||||||
data from the memory map. This caused an out-of-bounds write, which
|
|
||||||
depending on the length passed could be very large and reliably
|
|
||||||
segfault. Also nothing was printed, despite the use of -v option.
|
|
||||||
|
|
||||||
(I don't know if this case gets reached by any existing xfstest, but
|
|
||||||
presumably not. I noticed it while working on a patch to an xfstest.)
|
|
||||||
|
|
||||||
Signed-off-by: Eric Biggers <ebiggers@google.com>
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
---
|
|
||||||
io/mmap.c | 20 ++++++--------------
|
|
||||||
1 file changed, 6 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/io/mmap.c b/io/mmap.c
|
|
||||||
index 425957d..a5f30e0 100644
|
|
||||||
--- a/io/mmap.c
|
|
||||||
+++ b/io/mmap.c
|
|
||||||
@@ -472,34 +472,26 @@ mread_f(
|
|
||||||
dumplen = pagesize;
|
|
||||||
|
|
||||||
if (rflag) {
|
|
||||||
- for (tmp = length - 1, c = 0; tmp >= 0; tmp--, c = 1) {
|
|
||||||
- *bp = *(((char *)mapping->addr) + dumpoffset + tmp);
|
|
||||||
- cnt++;
|
|
||||||
- if (c && cnt == dumplen) {
|
|
||||||
+ for (tmp = length - 1; tmp >= 0; tmp--) {
|
|
||||||
+ bp[cnt++] = ((char *)mapping->addr)[dumpoffset + tmp];
|
|
||||||
+ if (cnt == dumplen) {
|
|
||||||
if (dump) {
|
|
||||||
dump_buffer(printoffset, dumplen);
|
|
||||||
printoffset += dumplen;
|
|
||||||
}
|
|
||||||
- bp = (char *)io_buffer;
|
|
||||||
dumplen = pagesize;
|
|
||||||
cnt = 0;
|
|
||||||
- } else {
|
|
||||||
- bp++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
- for (tmp = 0, c = 0; tmp < length; tmp++, c = 1) {
|
|
||||||
- *bp = *(((char *)mapping->addr) + dumpoffset + tmp);
|
|
||||||
- cnt++;
|
|
||||||
- if (c && cnt == dumplen) {
|
|
||||||
+ for (tmp = 0; tmp < length; tmp++) {
|
|
||||||
+ bp[cnt++] = ((char *)mapping->addr)[dumpoffset + tmp];
|
|
||||||
+ if (cnt == dumplen) {
|
|
||||||
if (dump)
|
|
||||||
dump_buffer(printoffset + tmp -
|
|
||||||
(dumplen - 1), dumplen);
|
|
||||||
- bp = (char *)io_buffer;
|
|
||||||
dumplen = pagesize;
|
|
||||||
cnt = 0;
|
|
||||||
- } else {
|
|
||||||
- bp++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.43.0
|
|
||||||
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
From c4dd920b8a8900046e0785e55a43c7190b82c59a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andrey Albershteyn <aalbersh@redhat.com>
|
|
||||||
Date: Tue, 23 Apr 2024 14:36:16 +0200
|
|
||||||
Subject: xfs_scrub: don't call phase_end if phase_rusage was not initialized
|
|
||||||
|
|
||||||
If unicrash_load() fails, all_pi can be used uninitialized in
|
|
||||||
phase_end(). Fix it by going to the unload: section if unicrash_load
|
|
||||||
fails and just go with unicrash_unload() (the is_service won't be
|
|
||||||
initialized here).
|
|
||||||
|
|
||||||
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
|
|
||||||
Reviewed-by: Bill O'Donnell <bodonnel@redhat.com>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
|
|
||||||
---
|
|
||||||
scrub/xfs_scrub.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/scrub/xfs_scrub.c b/scrub/xfs_scrub.c
|
|
||||||
index 752180d..5056585 100644
|
|
||||||
--- a/scrub/xfs_scrub.c
|
|
||||||
+++ b/scrub/xfs_scrub.c
|
|
||||||
@@ -631,7 +631,7 @@ main(
|
|
||||||
fprintf(stderr,
|
|
||||||
_("%s: couldn't initialize Unicode library.\n"),
|
|
||||||
progname);
|
|
||||||
- goto out;
|
|
||||||
+ goto out_unicrash;
|
|
||||||
}
|
|
||||||
|
|
||||||
pthread_mutex_init(&ctx.lock, NULL);
|
|
||||||
@@ -828,6 +828,7 @@ out:
|
|
||||||
phase_end(&all_pi, 0);
|
|
||||||
if (progress_fp)
|
|
||||||
fclose(progress_fp);
|
|
||||||
+out_unicrash:
|
|
||||||
unicrash_unload();
|
|
||||||
|
|
||||||
/*
|
|
||||||
--
|
|
||||||
2.43.0
|
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
Name: xfsprogs
|
Name: xfsprogs
|
||||||
Version: 6.6.0
|
Version: 6.6.0
|
||||||
Release: 7
|
Release: 2
|
||||||
Summary: Administration and debugging tools for the XFS file system
|
Summary: Administration and debugging tools for the XFS file system
|
||||||
License: GPL+ and LGPLv2+
|
License: GPL+ and LGPLv2+
|
||||||
URL: https://xfs.wiki.kernel.org
|
URL: https://xfs.wiki.kernel.org
|
||||||
@ -21,11 +21,6 @@ Conflicts: xfsdump < 3.0.1
|
|||||||
Patch0: xfsprogs-5.12.0-default-bigtime-inobtcnt-on.patch
|
Patch0: xfsprogs-5.12.0-default-bigtime-inobtcnt-on.patch
|
||||||
Patch1: 0001-xfsprogs-Add-sw64-architecture.patch
|
Patch1: 0001-xfsprogs-Add-sw64-architecture.patch
|
||||||
Patch2: 0002-xfs-fix-internal-error-from-AGFL-exhaustion.patch
|
Patch2: 0002-xfs-fix-internal-error-from-AGFL-exhaustion.patch
|
||||||
Patch3: 0003-xfs_db-don-t-hardcode-type-data-size-at-512b.patch
|
|
||||||
Patch4: 0004-xfs_db-fix-leak-in-flist_find_ftyp.patch
|
|
||||||
Patch5: 0005-xfs_db-add-helper-for-flist_find_type-for-clearer-fi.patch
|
|
||||||
Patch6: 0006-xfs_io-fix-mread-with-length-1-mod-page-size.patch
|
|
||||||
Patch7: 0007-xfs_scrub-don-t-call-phase_end-if-phase_rusage-was-n.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
xfsprogs are the userspace utilities that manage XFS filesystems.
|
xfsprogs are the userspace utilities that manage XFS filesystems.
|
||||||
@ -86,8 +81,6 @@ rm -rf %{buildroot}%{_datadir}/doc/xfsprogs/
|
|||||||
%{_sbindir}/*
|
%{_sbindir}/*
|
||||||
%{_unitdir}/*
|
%{_unitdir}/*
|
||||||
%{_datadir}/xfsprogs/mkfs/*.conf
|
%{_datadir}/xfsprogs/mkfs/*.conf
|
||||||
%exclude %{_sbindir}/xfs_scrub*
|
|
||||||
%exclude %{_unitdir}/xfs_scrub*
|
|
||||||
|
|
||||||
%files xfs_scrub
|
%files xfs_scrub
|
||||||
%{_sbindir}/xfs_scrub*
|
%{_sbindir}/xfs_scrub*
|
||||||
@ -109,22 +102,6 @@ rm -rf %{buildroot}%{_datadir}/doc/xfsprogs/
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Sat Jul 6 2024 liuh <liuhuan01@kylinos.cn> - 6.6.0-7
|
|
||||||
- xfs_scrub: don't call phase_end if phase_rusage was not initialized
|
|
||||||
|
|
||||||
* Fri Jun 21 2024 liuh <liuhuan01@kylinos.cn> - 6.6.0-6
|
|
||||||
- sync pathc from community
|
|
||||||
xfs_io: fix mread with length 1 mod page size
|
|
||||||
|
|
||||||
* Tue Jun 4 2024 liuh <liuhuan01@kylinos.cn> - 6.6.0-5
|
|
||||||
- sync patches from community
|
|
||||||
|
|
||||||
* Wed May 08 2024 chendexi <chendexi@kylinos.cn> - 6.6.0-4
|
|
||||||
- Remove xfs_scrub related files from the main package to remove python dependencies
|
|
||||||
|
|
||||||
* Tue Apr 2 2024 liuh <liuhuan01@kylinos.cn> - 6.6.0-3
|
|
||||||
- sync patch from community
|
|
||||||
|
|
||||||
* Fri Mar 29 2024 liuh <liuhuan01@kylinos.cn> - 6.6.0-2
|
* Fri Mar 29 2024 liuh <liuhuan01@kylinos.cn> - 6.6.0-2
|
||||||
- sync patch from community
|
- sync patch from community
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user