Merge 4.5-rc4 into driver-core-next
We want the fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
このコミットが含まれているのは:
@@ -1400,6 +1400,21 @@ config RCU_EQS_DEBUG
|
||||
|
||||
endmenu # "RCU Debugging"
|
||||
|
||||
config DEBUG_WQ_FORCE_RR_CPU
|
||||
bool "Force round-robin CPU selection for unbound work items"
|
||||
depends on DEBUG_KERNEL
|
||||
default n
|
||||
help
|
||||
Workqueue used to implicitly guarantee that work items queued
|
||||
without explicit CPU specified are put on the local CPU. This
|
||||
guarantee is no longer true and while local CPU is still
|
||||
preferred work items may be put on foreign CPUs. Kernel
|
||||
parameter "workqueue.debug_force_rr_cpu" is added to force
|
||||
round-robin CPU selection to flush out usages which depend on the
|
||||
now broken guarantee. This config option enables the debug
|
||||
feature by default. When enabled, memory and cache locality will
|
||||
be impacted.
|
||||
|
||||
config DEBUG_BLOCK_EXT_DEVT
|
||||
bool "Force extended block device numbers and spread them"
|
||||
depends on DEBUG_KERNEL
|
||||
|
@@ -18,6 +18,8 @@ config UBSAN_SANITIZE_ALL
|
||||
This option activates instrumentation for the entire kernel.
|
||||
If you don't enable this option, you have to explicitly specify
|
||||
UBSAN_SANITIZE := y for the files/directories you want to check for UB.
|
||||
Enabling this option will get kernel image size increased
|
||||
significantly.
|
||||
|
||||
config UBSAN_ALIGNMENT
|
||||
bool "Enable checking of pointers alignment"
|
||||
@@ -25,5 +27,5 @@ config UBSAN_ALIGNMENT
|
||||
default y if !HAVE_EFFICIENT_UNALIGNED_ACCESS
|
||||
help
|
||||
This option enables detection of unaligned memory accesses.
|
||||
Enabling this option on architectures that support unalligned
|
||||
Enabling this option on architectures that support unaligned
|
||||
accesses may produce a lot of false positives.
|
||||
|
@@ -282,9 +282,9 @@ void klist_iter_init_node(struct klist *k, struct klist_iter *i,
|
||||
struct klist_node *n)
|
||||
{
|
||||
i->i_klist = k;
|
||||
i->i_cur = n;
|
||||
if (n)
|
||||
kref_get(&n->n_ref);
|
||||
i->i_cur = NULL;
|
||||
if (n && kref_get_unless_zero(&n->n_ref))
|
||||
i->i_cur = n;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(klist_iter_init_node);
|
||||
|
||||
|
@@ -598,9 +598,9 @@ EXPORT_SYMBOL(sg_miter_next);
|
||||
*
|
||||
* Description:
|
||||
* Stops mapping iterator @miter. @miter should have been started
|
||||
* started using sg_miter_start(). A stopped iteration can be
|
||||
* resumed by calling sg_miter_next() on it. This is useful when
|
||||
* resources (kmap) need to be released during iteration.
|
||||
* using sg_miter_start(). A stopped iteration can be resumed by
|
||||
* calling sg_miter_next() on it. This is useful when resources (kmap)
|
||||
* need to be released during iteration.
|
||||
*
|
||||
* Context:
|
||||
* Preemption disabled if the SG_MITER_ATOMIC is set. Don't care
|
||||
|
@@ -1590,22 +1590,23 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||
return buf;
|
||||
}
|
||||
case 'K':
|
||||
/*
|
||||
* %pK cannot be used in IRQ context because its test
|
||||
* for CAP_SYSLOG would be meaningless.
|
||||
*/
|
||||
if (kptr_restrict && (in_irq() || in_serving_softirq() ||
|
||||
in_nmi())) {
|
||||
if (spec.field_width == -1)
|
||||
spec.field_width = default_width;
|
||||
return string(buf, end, "pK-error", spec);
|
||||
}
|
||||
|
||||
switch (kptr_restrict) {
|
||||
case 0:
|
||||
/* Always print %pK values */
|
||||
break;
|
||||
case 1: {
|
||||
const struct cred *cred;
|
||||
|
||||
/*
|
||||
* kptr_restrict==1 cannot be used in IRQ context
|
||||
* because its test for CAP_SYSLOG would be meaningless.
|
||||
*/
|
||||
if (in_irq() || in_serving_softirq() || in_nmi()) {
|
||||
if (spec.field_width == -1)
|
||||
spec.field_width = default_width;
|
||||
return string(buf, end, "pK-error", spec);
|
||||
}
|
||||
|
||||
/*
|
||||
* Only print the real pointer value if the current
|
||||
* process has CAP_SYSLOG and is running with the
|
||||
@@ -1615,8 +1616,7 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
|
||||
* leak pointer values if a binary opens a file using
|
||||
* %pK and then elevates privileges before reading it.
|
||||
*/
|
||||
const struct cred *cred = current_cred();
|
||||
|
||||
cred = current_cred();
|
||||
if (!has_capability_noaudit(current, CAP_SYSLOG) ||
|
||||
!uid_eq(cred->euid, cred->uid) ||
|
||||
!gid_eq(cred->egid, cred->gid))
|
||||
|
新しいイシューから参照
ユーザーをブロックする