I noticed that our autobot recently backported parts of a series which
fixed XFS syncfs error handling [1]. Unfortunately - due to missing
requirements - it only managed to merge those patches which do not
actually fix anything.
This can be repaired by applying the prerequisites and then the missing
parts of the original series, namely in order:
9a208ba5c9af fs: remove __sync_filesystem
70164eb6ccb7 block: remove __sync_blockdev
1e03a36bdff4 block: simplify the block device syncing code
5679897eb104 vfs: make sync_filesystem return errors from ->sync_fs
2d86293c7075 xfs: return errors in xfs_fs_sync_fs
With all that we could also put a cherry on top and merge:
b97cca3ba909 xfs: only bother with sync_filesystem during readonly remount
but that's just a touchup and not a real bugfix, so probably optional.
thanks,
Holger
[1] https://lore.kernel.org/linux-xfs/164316348940.2600168.17153575889519271710…
From: Niklas Cassel <niklas.cassel(a)wdc.com>
The sparse annotation ordering inside the function call is swapped.
Fix the ordering so that we silence the following sparse warnings:
fs/binfmt_flat.c:816:39: warning: incorrect type in argument 1 (different address spaces)
fs/binfmt_flat.c:816:39: expected unsigned int [noderef] [usertype] __user *rp
fs/binfmt_flat.c:816:39: got unsigned int [usertype] *[noderef] __user
No functional change as sparse annotations are ignored by the compiler.
Fixes: a767e6fd68d2 ("binfmt_flat: do not stop relocating GOT entries prematurely on riscv")
Reported-by: kernel test robot <lkp(a)intel.com>
Signed-off-by: Niklas Cassel <niklas.cassel(a)wdc.com>
Cc: <stable(a)vger.kernel.org>
---
Hello Kees,
Sorry about this.
Feel free to squash it with the existing patch if you so like.
fs/binfmt_flat.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
index e5e2a03b39c1..dca0b6875f9c 100644
--- a/fs/binfmt_flat.c
+++ b/fs/binfmt_flat.c
@@ -813,7 +813,7 @@ static int load_flat_file(struct linux_binprm *bprm,
* image.
*/
if (flags & FLAT_FLAG_GOTPIC) {
- rp = skip_got_header((u32 * __user) datapos);
+ rp = skip_got_header((u32 __user *) datapos);
for (; ; rp++) {
u32 addr, rp_val;
if (get_user(rp_val, rp))
--
2.35.1