Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
drivers/net/ethernet/freescale/fec.h7b15515fc1("Revert "fec: Restart PPS after link state change"")40c79ce13b("net: fec: add stop mode support for imx8 platform") https://lore.kernel.org/all/20220921105337.62b41047@canb.auug.org.au/ drivers/pinctrl/pinctrl-ocelot.cc297561bc9("pinctrl: ocelot: Fix interrupt controller")181f604b33("pinctrl: ocelot: add ability to be used in a non-mmio configuration") https://lore.kernel.org/all/20220921110032.7cd28114@canb.auug.org.au/ tools/testing/selftests/drivers/net/bonding/Makefilebbb774d921("net: Add tests for bonding and team address list management")152e8ec776("selftests/bonding: add a test for bonding lladdr target") https://lore.kernel.org/all/20220921110437.5b7dbd82@canb.auug.org.au/ drivers/net/can/usb/gs_usb.c5440428b3d("can: gs_usb: gs_can_open(): fix race dev->can.state condition")45dfa45f52("can: gs_usb: add RX and TX hardware timestamp support") https://lore.kernel.org/all/84f45a7d-92b6-4dc5-d7a1-072152fab6ff@tessares.net/ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
0140a7168f
429 changed files with 4044 additions and 2760 deletions
|
|
@ -350,11 +350,10 @@ static struct dma_debug_entry *bucket_find_contain(struct hash_bucket **bucket,
|
|||
unsigned long *flags)
|
||||
{
|
||||
|
||||
unsigned int max_range = dma_get_max_seg_size(ref->dev);
|
||||
struct dma_debug_entry *entry, index = *ref;
|
||||
unsigned int range = 0;
|
||||
int limit = min(HASH_SIZE, (index.dev_addr >> HASH_FN_SHIFT) + 1);
|
||||
|
||||
while (range <= max_range) {
|
||||
for (int i = 0; i < limit; i++) {
|
||||
entry = __hash_bucket_find(*bucket, ref, containing_match);
|
||||
|
||||
if (entry)
|
||||
|
|
@ -364,7 +363,6 @@ static struct dma_debug_entry *bucket_find_contain(struct hash_bucket **bucket,
|
|||
* Nothing found, go back a hash bucket
|
||||
*/
|
||||
put_hash_bucket(*bucket, *flags);
|
||||
range += (1 << HASH_FN_SHIFT);
|
||||
index.dev_addr -= (1 << HASH_FN_SHIFT);
|
||||
*bucket = get_hash_bucket(&index, flags);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -707,7 +707,7 @@ int dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(dma_mmap_noncontiguous);
|
||||
|
||||
int dma_supported(struct device *dev, u64 mask)
|
||||
static int dma_supported(struct device *dev, u64 mask)
|
||||
{
|
||||
const struct dma_map_ops *ops = get_dma_ops(dev);
|
||||
|
||||
|
|
@ -721,7 +721,6 @@ int dma_supported(struct device *dev, u64 mask)
|
|||
return 1;
|
||||
return ops->dma_supported(dev, mask);
|
||||
}
|
||||
EXPORT_SYMBOL(dma_supported);
|
||||
|
||||
bool dma_pci_p2pdma_supported(struct device *dev)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -326,9 +326,6 @@ void __init swiotlb_init_remap(bool addressing_limit, unsigned int flags,
|
|||
swiotlb_adjust_nareas(num_possible_cpus());
|
||||
|
||||
nslabs = default_nslabs;
|
||||
if (nslabs < IO_TLB_MIN_SLABS)
|
||||
panic("%s: nslabs = %lu too small\n", __func__, nslabs);
|
||||
|
||||
/*
|
||||
* By default allocate the bounce buffer memory from low memory, but
|
||||
* allow to pick a location everywhere for hypervisors with guest
|
||||
|
|
@ -341,8 +338,7 @@ retry:
|
|||
else
|
||||
tlb = memblock_alloc_low(bytes, PAGE_SIZE);
|
||||
if (!tlb) {
|
||||
pr_warn("%s: Failed to allocate %zu bytes tlb structure\n",
|
||||
__func__, bytes);
|
||||
pr_warn("%s: failed to allocate tlb structure\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -579,7 +575,10 @@ static void swiotlb_bounce(struct device *dev, phys_addr_t tlb_addr, size_t size
|
|||
}
|
||||
}
|
||||
|
||||
#define slot_addr(start, idx) ((start) + ((idx) << IO_TLB_SHIFT))
|
||||
static inline phys_addr_t slot_addr(phys_addr_t start, phys_addr_t idx)
|
||||
{
|
||||
return start + (idx << IO_TLB_SHIFT);
|
||||
}
|
||||
|
||||
/*
|
||||
* Carefully handle integer overflow which can occur when boundary_mask == ~0UL.
|
||||
|
|
@ -765,7 +764,7 @@ phys_addr_t swiotlb_tbl_map_single(struct device *dev, phys_addr_t orig_addr,
|
|||
/*
|
||||
* When dir == DMA_FROM_DEVICE we could omit the copy from the orig
|
||||
* to the tlb buffer, if we knew for sure the device will
|
||||
* overwirte the entire current content. But we don't. Thus
|
||||
* overwrite the entire current content. But we don't. Thus
|
||||
* unconditional bounce may prevent leaking swiotlb content (i.e.
|
||||
* kernel memory) to user-space.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1225,6 +1225,7 @@ void mmput_async(struct mm_struct *mm)
|
|||
schedule_work(&mm->async_put_work);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmput_async);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
@ -2046,11 +2047,8 @@ static __latent_entropy struct task_struct *copy_process(
|
|||
/*
|
||||
* If the new process will be in a different time namespace
|
||||
* do not allow it to share VM or a thread group with the forking task.
|
||||
*
|
||||
* On vfork, the child process enters the target time namespace only
|
||||
* after exec.
|
||||
*/
|
||||
if ((clone_flags & (CLONE_VM | CLONE_VFORK)) == CLONE_VM) {
|
||||
if (clone_flags & (CLONE_THREAD | CLONE_VM)) {
|
||||
if (nsp->time_ns != nsp->time_ns_for_children)
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1562,6 +1562,7 @@ static int check_kprobe_address_safe(struct kprobe *p,
|
|||
/* Ensure it is not in reserved area nor out of text */
|
||||
if (!(core_kernel_text((unsigned long) p->addr) ||
|
||||
is_module_text_address((unsigned long) p->addr)) ||
|
||||
in_gate_area_no_mm((unsigned long) p->addr) ||
|
||||
within_kprobe_blacklist((unsigned long) p->addr) ||
|
||||
jump_label_text_reserved(p->addr, p->addr) ||
|
||||
static_call_text_reserved(p->addr, p->addr) ||
|
||||
|
|
|
|||
|
|
@ -179,8 +179,7 @@ int copy_namespaces(unsigned long flags, struct task_struct *tsk)
|
|||
if (IS_ERR(new_ns))
|
||||
return PTR_ERR(new_ns);
|
||||
|
||||
if ((flags & CLONE_VM) == 0)
|
||||
timens_on_fork(new_ns, tsk);
|
||||
timens_on_fork(new_ns, tsk);
|
||||
|
||||
tsk->nsproxy = new_ns;
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -416,7 +416,7 @@ void update_sched_domain_debugfs(void)
|
|||
char buf[32];
|
||||
|
||||
snprintf(buf, sizeof(buf), "cpu%d", cpu);
|
||||
debugfs_remove(debugfs_lookup(buf, sd_dentry));
|
||||
debugfs_lookup_and_remove(buf, sd_dentry);
|
||||
d_cpu = debugfs_create_dir(buf, sd_dentry);
|
||||
|
||||
i = 0;
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ struct automaton_wip {
|
|||
bool final_states[state_max_wip];
|
||||
};
|
||||
|
||||
struct automaton_wip automaton_wip = {
|
||||
static struct automaton_wip automaton_wip = {
|
||||
.state_names = {
|
||||
"preemptive",
|
||||
"non_preemptive"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ struct automaton_wwnr {
|
|||
bool final_states[state_max_wwnr];
|
||||
};
|
||||
|
||||
struct automaton_wwnr automaton_wwnr = {
|
||||
static struct automaton_wwnr automaton_wwnr = {
|
||||
.state_names = {
|
||||
"not_running",
|
||||
"running"
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@ static struct rv_reactor rv_panic = {
|
|||
.react = rv_panic_reaction
|
||||
};
|
||||
|
||||
static int register_react_panic(void)
|
||||
static int __init register_react_panic(void)
|
||||
{
|
||||
rv_register_reactor(&rv_panic);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void unregister_react_panic(void)
|
||||
static void __exit unregister_react_panic(void)
|
||||
{
|
||||
rv_unregister_reactor(&rv_panic);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,13 +23,13 @@ static struct rv_reactor rv_printk = {
|
|||
.react = rv_printk_reaction
|
||||
};
|
||||
|
||||
static int register_react_printk(void)
|
||||
static int __init register_react_printk(void)
|
||||
{
|
||||
rv_register_reactor(&rv_printk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void unregister_react_printk(void)
|
||||
static void __exit unregister_react_printk(void)
|
||||
{
|
||||
rv_unregister_reactor(&rv_printk);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -142,7 +142,8 @@ static bool check_user_trigger(struct trace_event_file *file)
|
|||
{
|
||||
struct event_trigger_data *data;
|
||||
|
||||
list_for_each_entry_rcu(data, &file->triggers, list) {
|
||||
list_for_each_entry_rcu(data, &file->triggers, list,
|
||||
lockdep_is_held(&event_mutex)) {
|
||||
if (data->flags & EVENT_TRIGGER_FL_PROBE)
|
||||
continue;
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -95,14 +95,14 @@ __visible void trace_hardirqs_on_caller(unsigned long caller_addr)
|
|||
}
|
||||
|
||||
lockdep_hardirqs_on_prepare();
|
||||
lockdep_hardirqs_on(CALLER_ADDR0);
|
||||
lockdep_hardirqs_on(caller_addr);
|
||||
}
|
||||
EXPORT_SYMBOL(trace_hardirqs_on_caller);
|
||||
NOKPROBE_SYMBOL(trace_hardirqs_on_caller);
|
||||
|
||||
__visible void trace_hardirqs_off_caller(unsigned long caller_addr)
|
||||
{
|
||||
lockdep_hardirqs_off(CALLER_ADDR0);
|
||||
lockdep_hardirqs_off(caller_addr);
|
||||
|
||||
if (!this_cpu_read(tracing_irq_cpu)) {
|
||||
this_cpu_write(tracing_irq_cpu, 1);
|
||||
|
|
|
|||
|
|
@ -571,7 +571,8 @@ static void for_each_tracepoint_range(
|
|||
bool trace_module_has_bad_taint(struct module *mod)
|
||||
{
|
||||
return mod->taints & ~((1 << TAINT_OOT_MODULE) | (1 << TAINT_CRAP) |
|
||||
(1 << TAINT_UNSIGNED_MODULE));
|
||||
(1 << TAINT_UNSIGNED_MODULE) |
|
||||
(1 << TAINT_TEST));
|
||||
}
|
||||
|
||||
static BLOCKING_NOTIFIER_HEAD(tracepoint_notify_list);
|
||||
|
|
@ -647,7 +648,7 @@ static int tracepoint_module_coming(struct module *mod)
|
|||
/*
|
||||
* We skip modules that taint the kernel, especially those with different
|
||||
* module headers (for forced load), to make sure we don't cause a crash.
|
||||
* Staging, out-of-tree, and unsigned GPL modules are fine.
|
||||
* Staging, out-of-tree, unsigned GPL, and test modules are fine.
|
||||
*/
|
||||
if (trace_module_has_bad_taint(mod))
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue