Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
8288028
objtool: Fix truncated string warning
trofi Jan 20, 2022
279eb85
EDAC/altera: Fix deferred probing
Jan 24, 2022
dfd0dfb
EDAC/xgene: Fix deferred probing
Jan 24, 2022
e9cc5d4
tools include UAPI: Sync sound/asound.h copy with the kernel sources
acmel Feb 12, 2020
88443d3
tools headers UAPI: Sync linux/perf_event.h with the kernel sources
acmel May 21, 2021
d5381cc
tools headers cpufeatures: Sync with the kernel sources
acmel Jul 1, 2021
1001983
perf beauty: Make the prctl arg regexp more strict to cope with PR_SE…
acmel Feb 1, 2022
fc45e65
tools headers UAPI: Sync linux/prctl.h with the kernel sources
acmel Feb 11, 2021
a01994f
x86/perf: Default set FREEZE_ON_SMI for all
Jan 27, 2022
3c25fc9
perf: Copy perf_event_attr::sig_data on modification
melver Jan 31, 2022
95d29fa
selftests/perf_events: Test modification of perf_event_attr::sig_data
melver Jan 31, 2022
ddecd22
perf: uapi: Document perf_event_attr::sig_data truncation on 32 bit a…
melver Jan 31, 2022
1d90934
perf/x86/intel/pt: Fix crash with stop filters in single-range mode
trishume Jan 27, 2022
599ea31
ext4: prevent used blocks from being allocated during fast commit replay
Jan 10, 2022
31a074a
ext4: modify the logic of ext4_mb_new_blocks_simple
Jan 10, 2022
e85c81b
ext4: fast commit may not fallback for ineligible commit
Jan 17, 2022
bdc8a53
ext4: fast commit may miss file actions
Jan 17, 2022
897026a
ext4: fix error handling in ext4_restore_inline_data()
riteshharjani Jan 17, 2022
09355d9
ext4: remove redundant max inline_size check in ext4_da_write_inline_…
riteshharjani Jan 17, 2022
cdce59a
ext4: fix error handling in ext4_fc_record_modified_inode()
riteshharjani Jan 17, 2022
3ca40c0
jbd2: cleanup unused functions declarations from jbd2.h
riteshharjani Jan 17, 2022
4f98186
jbd2: refactor wait logic for transaction updates into a common function
riteshharjani Jan 17, 2022
7c268d4
ext4: fix potential NULL pointer dereference in ext4_fill_super()
Jan 19, 2022
715a67f
jbd2: fix kernel-doc descriptions for jbd2_journal_shrink_{scan,count}()
Jan 10, 2022
8fca8a2
ext4: fix incorrect type issue during replay_del_range
Jan 26, 2022
f340b3d
fs/ext4: fix comments mentioning i_mutex
Jan 21, 2022
dd7f5a1
PCI/MSI: Remove bogus warning in pci_irq_get_affinity()
KAGA-KOKO Jan 31, 2022
9334030
Merge remote-tracking branch 'torvalds/master' into perf/urgent
acmel Feb 6, 2022
b7b9825
tools headers UAPI: Sync linux/kvm.h with the kernel sources
acmel May 9, 2021
ae65b44
perf tools: Add missing branch_sample_type to perf_event_attr__fprintf()
Feb 2, 2022
a663520
perf annotate: Set error stream of objdump process for TUI
namhyung Feb 2, 2022
d792a7a
perf session: Check for NULL pointer before dereference
amer-hamza Jan 25, 2022
bc9c806
perf synthetic-events: Return error if procfs isn't mounted for PID n…
Dec 24, 2021
a2887b9
perf bpf: Fix a typo in bpf_counter_cgroup.c
standby24x7 Dec 25, 2021
05b5a9d
perf tools: Apply correct label to user/kernel symbols in branch mode
german-arm Jan 26, 2022
b2b1aa7
perf stat: Fix display of grouped aliased events
captain5050 Feb 5, 2022
4f24927
tools include UAPI: Sync sound/asound.h copy with the kernel sources
acmel Feb 12, 2020
407eb43
libperf: Add arm64 support to perf_mmap__read_self()
robherring Feb 1, 2022
fceb621
perf ftrace: system_wide collection is not effective by default
changbindu Jan 27, 2022
898b584
Merge tag 'edac_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm…
torvalds Feb 6, 2022
b72e40b
Merge tag 'irq_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/…
torvalds Feb 6, 2022
aeabe1e
Merge tag 'objtool_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/…
torvalds Feb 6, 2022
c3bf8a1
Merge tag 'perf_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm…
torvalds Feb 6, 2022
18118a4
Merge tag 'perf-tools-fixes-for-v5.17-2022-02-06' of git://git.kernel…
torvalds Feb 6, 2022
d8ad2ce
Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/lin…
torvalds Feb 6, 2022
dfd42fa
Linux 5.17-rc3
torvalds Feb 6, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
VERSION = 5
PATCHLEVEL = 17
SUBLEVEL = 0
EXTRAVERSION = -rc2
EXTRAVERSION = -rc3
NAME = Gobble Gobble

# *DOCUMENTATION*
Expand Down
13 changes: 13 additions & 0 deletions arch/x86/events/intel/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -4703,6 +4703,19 @@ static __initconst const struct x86_pmu intel_pmu = {
.lbr_read = intel_pmu_lbr_read_64,
.lbr_save = intel_pmu_lbr_save,
.lbr_restore = intel_pmu_lbr_restore,

/*
* SMM has access to all 4 rings and while traditionally SMM code only
* ran in CPL0, 2021-era firmware is starting to make use of CPL3 in SMM.
*
* Since the EVENTSEL.{USR,OS} CPL filtering makes no distinction
* between SMM or not, this results in what should be pure userspace
* counters including SMM data.
*
* This is a clear privilege issue, therefore globally disable
* counting SMM by default.
*/
.attr_freeze_on_smi = 1,
};

static __init void intel_clovertown_quirk(void)
Expand Down
5 changes: 3 additions & 2 deletions arch/x86/events/intel/pt.c
Original file line number Diff line number Diff line change
Expand Up @@ -897,8 +897,9 @@ static void pt_handle_status(struct pt *pt)
* means we are already losing data; need to let the decoder
* know.
*/
if (!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries) ||
buf->output_off == pt_buffer_region_size(buf)) {
if (!buf->single &&
(!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries) ||
buf->output_off == pt_buffer_region_size(buf))) {
perf_aux_output_flag(&pt->handle,
PERF_AUX_FLAG_TRUNCATED);
advance++;
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/altera_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ static int altr_sdram_probe(struct platform_device *pdev)
if (irq < 0) {
edac_printk(KERN_ERR, EDAC_MC,
"No irq %d in DT\n", irq);
return -ENODEV;
return irq;
}

/* Arria10 has a 2nd IRQ */
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/xgene_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1919,7 +1919,7 @@ static int xgene_edac_probe(struct platform_device *pdev)
irq = platform_get_irq_optional(pdev, i);
if (irq < 0) {
dev_err(&pdev->dev, "No IRQ resource\n");
rc = -EINVAL;
rc = irq;
goto out_err;
}
rc = devm_request_irq(&pdev->dev, irq,
Expand Down
3 changes: 2 additions & 1 deletion drivers/pci/msi/msi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1111,7 +1111,8 @@ const struct cpumask *pci_irq_get_affinity(struct pci_dev *dev, int nr)
if (!desc)
return cpu_possible_mask;

if (WARN_ON_ONCE(!desc->affinity))
/* MSI[X] interrupts can be allocated without affinity descriptor */
if (!desc->affinity)
return NULL;

/*
Expand Down
8 changes: 4 additions & 4 deletions fs/ext4/acl.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ ext4_acl_to_disk(const struct posix_acl *acl, size_t *size)
/*
* Inode operation get_posix_acl().
*
* inode->i_mutex: don't care
* inode->i_rwsem: don't care
*/
struct posix_acl *
ext4_get_acl(struct inode *inode, int type, bool rcu)
Expand Down Expand Up @@ -183,7 +183,7 @@ ext4_get_acl(struct inode *inode, int type, bool rcu)
/*
* Set the access or default ACL of an inode.
*
* inode->i_mutex: down unless called from ext4_new_inode
* inode->i_rwsem: down unless called from ext4_new_inode
*/
static int
__ext4_set_acl(handle_t *handle, struct inode *inode, int type,
Expand Down Expand Up @@ -271,8 +271,8 @@ ext4_set_acl(struct user_namespace *mnt_userns, struct inode *inode,
/*
* Initialize the ACLs of a new inode. Called from ext4_new_inode.
*
* dir->i_mutex: down
* inode->i_mutex: up (access to inode is still exclusive)
* dir->i_rwsem: down
* inode->i_rwsem: up (access to inode is still exclusive)
*/
int
ext4_init_acl(handle_t *handle, struct inode *inode, struct inode *dir)
Expand Down
17 changes: 9 additions & 8 deletions fs/ext4/ext4.h
Original file line number Diff line number Diff line change
Expand Up @@ -1028,7 +1028,7 @@ struct ext4_inode_info {

/*
* Extended attributes can be read independently of the main file
* data. Taking i_mutex even when reading would cause contention
* data. Taking i_rwsem even when reading would cause contention
* between readers of EAs and writers of regular file data, so
* instead we synchronize on xattr_sem when reading or changing
* EAs.
Expand Down Expand Up @@ -1750,6 +1750,7 @@ struct ext4_sb_info {
spinlock_t s_fc_lock;
struct buffer_head *s_fc_bh;
struct ext4_fc_stats s_fc_stats;
tid_t s_fc_ineligible_tid;
#ifdef CONFIG_EXT4_DEBUG
int s_fc_debug_max_replay;
#endif
Expand Down Expand Up @@ -1795,10 +1796,7 @@ static inline int ext4_valid_inum(struct super_block *sb, unsigned long ino)
enum {
EXT4_MF_MNTDIR_SAMPLED,
EXT4_MF_FS_ABORTED, /* Fatal error detected */
EXT4_MF_FC_INELIGIBLE, /* Fast commit ineligible */
EXT4_MF_FC_COMMITTING /* File system underoing a fast
* commit.
*/
EXT4_MF_FC_INELIGIBLE /* Fast commit ineligible */
};

static inline void ext4_set_mount_flag(struct super_block *sb, int bit)
Expand Down Expand Up @@ -2926,7 +2924,7 @@ void __ext4_fc_track_create(handle_t *handle, struct inode *inode,
struct dentry *dentry);
void ext4_fc_track_create(handle_t *handle, struct dentry *dentry);
void ext4_fc_track_inode(handle_t *handle, struct inode *inode);
void ext4_fc_mark_ineligible(struct super_block *sb, int reason);
void ext4_fc_mark_ineligible(struct super_block *sb, int reason, handle_t *handle);
void ext4_fc_start_update(struct inode *inode);
void ext4_fc_stop_update(struct inode *inode);
void ext4_fc_del(struct inode *inode);
Expand All @@ -2935,6 +2933,9 @@ void ext4_fc_replay_cleanup(struct super_block *sb);
int ext4_fc_commit(journal_t *journal, tid_t commit_tid);
int __init ext4_fc_init_dentry_cache(void);
void ext4_fc_destroy_dentry_cache(void);
int ext4_fc_record_regions(struct super_block *sb, int ino,
ext4_lblk_t lblk, ext4_fsblk_t pblk,
int len, int replay);

/* mballoc.c */
extern const struct seq_operations ext4_mb_seq_groups_ops;
Expand Down Expand Up @@ -3407,7 +3408,7 @@ do { \
#define EXT4_FREECLUSTERS_WATERMARK 0
#endif

/* Update i_disksize. Requires i_mutex to avoid races with truncate */
/* Update i_disksize. Requires i_rwsem to avoid races with truncate */
static inline void ext4_update_i_disksize(struct inode *inode, loff_t newsize)
{
WARN_ON_ONCE(S_ISREG(inode->i_mode) &&
Expand All @@ -3418,7 +3419,7 @@ static inline void ext4_update_i_disksize(struct inode *inode, loff_t newsize)
up_write(&EXT4_I(inode)->i_data_sem);
}

/* Update i_size, i_disksize. Requires i_mutex to avoid races with truncate */
/* Update i_size, i_disksize. Requires i_rwsem to avoid races with truncate */
static inline int ext4_update_inode_size(struct inode *inode, loff_t newsize)
{
int changed = 0;
Expand Down
2 changes: 1 addition & 1 deletion fs/ext4/ext4_jbd2.h
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ static inline int ext4_free_data_revoke_credits(struct inode *inode, int blocks)
/*
* This function controls whether or not we should try to go down the
* dioread_nolock code paths, which makes it safe to avoid taking
* i_mutex for direct I/O reads. This only works for extent-based
* i_rwsem for direct I/O reads. This only works for extent-based
* files, and it doesn't work if data journaling is enabled, since the
* dioread_nolock code uses b_private to pass information back to the
* I/O completion handler, and this conflicts with the jbd's use of
Expand Down
16 changes: 10 additions & 6 deletions fs/ext4/extents.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ static int ext4_ext_trunc_restart_fn(struct inode *inode, int *dropped)
* Drop i_data_sem to avoid deadlock with ext4_map_blocks. At this
* moment, get_block can be called only for blocks inside i_size since
* page cache has been already dropped and writes are blocked by
* i_mutex. So we can safely drop the i_data_sem here.
* i_rwsem. So we can safely drop the i_data_sem here.
*/
BUG_ON(EXT4_JOURNAL(inode) == NULL);
ext4_discard_preallocations(inode, 0);
Expand Down Expand Up @@ -4572,7 +4572,7 @@ static long ext4_zero_range(struct file *file, loff_t offset,

flags = EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT;

/* Wait all existing dio workers, newcomers will block on i_mutex */
/* Wait all existing dio workers, newcomers will block on i_rwsem */
inode_dio_wait(inode);

/* Preallocate the range including the unaligned edges */
Expand Down Expand Up @@ -4738,7 +4738,7 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
goto out;
}

/* Wait all existing dio workers, newcomers will block on i_mutex */
/* Wait all existing dio workers, newcomers will block on i_rwsem */
inode_dio_wait(inode);

ret = ext4_alloc_file_blocks(file, lblk, max_blocks, new_size, flags);
Expand Down Expand Up @@ -5334,7 +5334,7 @@ static int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len)
ret = PTR_ERR(handle);
goto out_mmap;
}
ext4_fc_mark_ineligible(sb, EXT4_FC_REASON_FALLOC_RANGE);
ext4_fc_mark_ineligible(sb, EXT4_FC_REASON_FALLOC_RANGE, handle);

down_write(&EXT4_I(inode)->i_data_sem);
ext4_discard_preallocations(inode, 0);
Expand Down Expand Up @@ -5474,7 +5474,7 @@ static int ext4_insert_range(struct inode *inode, loff_t offset, loff_t len)
ret = PTR_ERR(handle);
goto out_mmap;
}
ext4_fc_mark_ineligible(sb, EXT4_FC_REASON_FALLOC_RANGE);
ext4_fc_mark_ineligible(sb, EXT4_FC_REASON_FALLOC_RANGE, handle);

/* Expand file to avoid data loss if there is error while shifting */
inode->i_size += len;
Expand Down Expand Up @@ -5571,7 +5571,7 @@ static int ext4_insert_range(struct inode *inode, loff_t offset, loff_t len)
* stuff such as page-cache locking consistency, bh mapping consistency or
* extent's data copying must be performed by caller.
* Locking:
* i_mutex is held for both inodes
* i_rwsem is held for both inodes
* i_data_sem is locked for write for both inodes
* Assumptions:
* All pages from requested range are locked for both inodes
Expand Down Expand Up @@ -6091,11 +6091,15 @@ int ext4_ext_clear_bb(struct inode *inode)

ext4_mb_mark_bb(inode->i_sb,
path[j].p_block, 1, 0);
ext4_fc_record_regions(inode->i_sb, inode->i_ino,
0, path[j].p_block, 1, 1);
}
ext4_ext_drop_refs(path);
kfree(path);
}
ext4_mb_mark_bb(inode->i_sb, map.m_pblk, map.m_len, 0);
ext4_fc_record_regions(inode->i_sb, inode->i_ino,
map.m_lblk, map.m_pblk, map.m_len, 1);
}
cur = cur + map.m_len;
}
Expand Down
Loading