diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/cifs/connect.c | 2 | ||||
-rw-r--r-- | fs/f2fs/segment.c | 5 | ||||
-rw-r--r-- | fs/f2fs/super.c | 9 | ||||
-rw-r--r-- | fs/inode.c | 7 | ||||
-rw-r--r-- | fs/io_uring.c | 6 | ||||
-rw-r--r-- | fs/pstore/ram.c | 2 |
6 files changed, 28 insertions, 3 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 0ad1309e88d3..f5967fcc5a07 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -710,7 +710,7 @@ server_unresponsive(struct TCP_Server_Info *server) * We need to wait 3 echo intervals to make sure we handle such * situations right: * 1s client sends a normal SMB request - * 2s client gets a response + * 3s client gets a response * 30s echo workqueue job pops, and decides we got a response recently * and don't need to send another * ... diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index a65d357f89a9..3fc54bd1d2b3 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -3526,6 +3526,11 @@ static int read_compacted_summaries(struct f2fs_sb_info *sbi) seg_i = CURSEG_I(sbi, i); segno = le32_to_cpu(ckpt->cur_data_segno[i]); blk_off = le16_to_cpu(ckpt->cur_data_blkoff[i]); + if (blk_off > ENTRIES_IN_SUM) { + f2fs_bug_on(sbi, 1); + f2fs_put_page(page, 1); + return -EFAULT; + } seg_i->next_segno = segno; reset_curseg(sbi, i, 0); seg_i->alloc_type = ckpt->alloc_type[i]; diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index dfa072fa8081..7183fbd1a5b9 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -3010,6 +3010,15 @@ int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi) return 1; } + if (__is_set_ckpt_flags(ckpt, CP_LARGE_NAT_BITMAP_FLAG) && + le32_to_cpu(ckpt->checksum_offset) != CP_MIN_CHKSUM_OFFSET) { + f2fs_msg(sbi->sb, KERN_WARNING, + "layout of large_nat_bitmap is deprecated, " + "run fsck to repair, chksum_offset: %u", + le32_to_cpu(ckpt->checksum_offset)); + return 1; + } + if (unlikely(f2fs_cp_error(sbi))) { f2fs_err(sbi, "A bug case: need to run fsck"); return 1; diff --git a/fs/inode.c b/fs/inode.c index 72c4c347afb7..c27989fbfb51 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -755,8 +755,11 @@ static enum lru_status inode_lru_isolate(struct list_head *item, return LRU_REMOVED; } - /* recently referenced inodes get one more pass */ - if (inode->i_state & I_REFERENCED) { + /* + * Recently referenced inodes and inodes with many attached pages + * get one more pass. + */ + if (inode->i_state & I_REFERENCED || inode->i_data.nrpages > 1) { inode->i_state &= ~I_REFERENCED; spin_unlock(&inode->i_lock); return LRU_ROTATE; diff --git a/fs/io_uring.c b/fs/io_uring.c index 2a3af95be4ca..f8ae4e4c0c8b 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -8317,6 +8317,12 @@ static int io_uring_create(unsigned entries, struct io_uring_params *p, ctx->user = user; ctx->creds = get_current_cred(); + ctx->creds = get_current_cred(); + if (!ctx->creds) { + ret = -ENOMEM; + goto err; + } + ret = io_allocate_scq_urings(ctx, p); if (ret) goto err; diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index ca6d8a867285..8882c1fd17f5 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -545,6 +545,7 @@ static int ramoops_init_przs(const char *name, dev_err(dev, "failed to request %s mem region (0x%zx@0x%llx): %d\n", name, record_size, (unsigned long long)*paddr, err); + kfree(label); while (i > 0) { i--; @@ -591,6 +592,7 @@ static int ramoops_init_prz(const char *name, dev_err(dev, "failed to request %s mem region (0x%zx@0x%llx): %d\n", name, sz, (unsigned long long)*paddr, err); + kfree(label); return err; } |