Linux v4.5-6486-g6b5f04b6cf8e
- cgroup, libata, workqueue, block, akpm, usb merges
This commit is contained in:
parent
3f7b06675b
commit
8e2d7107d3
@ -1,173 +0,0 @@
|
|||||||
From 8b368e8e961944105945fbe36f3f264252bfd19a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dan Williams <dan.j.williams@intel.com>
|
|
||||||
Date: Thu, 25 Feb 2016 01:02:30 +0000
|
|
||||||
Subject: [PATCH] mm: CONFIG_NR_ZONES_EXTENDED
|
|
||||||
|
|
||||||
ZONE_DEVICE (merged in 4.3) and ZONE_CMA (proposed) are examples of new mm
|
|
||||||
zones that are bumping up against the current maximum limit of 4 zones,
|
|
||||||
i.e. 2 bits in page->flags. When adding a zone this equation still needs
|
|
||||||
to be satisified:
|
|
||||||
|
|
||||||
SECTIONS_WIDTH + ZONES_WIDTH + NODES_SHIFT + LAST_CPUPID_SHIFT
|
|
||||||
<= BITS_PER_LONG - NR_PAGEFLAGS
|
|
||||||
|
|
||||||
ZONE_DEVICE currently tries to satisfy this equation by requiring that
|
|
||||||
ZONE_DMA be disabled, but this is untenable given generic kernels want to
|
|
||||||
support ZONE_DEVICE and ZONE_DMA simultaneously. ZONE_CMA would like to
|
|
||||||
increase the amount of memory covered per section, but that limits the
|
|
||||||
minimum granularity at which consecutive memory ranges can be added via
|
|
||||||
devm_memremap_pages().
|
|
||||||
|
|
||||||
The trade-off of what is acceptable to sacrifice depends heavily on the
|
|
||||||
platform. For example, ZONE_CMA is targeted for 32-bit platforms where
|
|
||||||
page->flags is constrained, but those platforms likely do not care about
|
|
||||||
the minimum granularity of memory hotplug. A big iron machine with 1024
|
|
||||||
numa nodes can likely sacrifice ZONE_DMA where a general purpose
|
|
||||||
distribution kernel can not.
|
|
||||||
|
|
||||||
CONFIG_NR_ZONES_EXTENDED is a configuration symbol that gets selected when
|
|
||||||
the number of configured zones exceeds 4. It documents the configuration
|
|
||||||
symbols and definitions that get modified when ZONES_WIDTH is greater than
|
|
||||||
2.
|
|
||||||
|
|
||||||
For now, it steals a bit from NODES_SHIFT. Later on it can be used to
|
|
||||||
document the definitions that get modified when a 32-bit configuration
|
|
||||||
wants more zone bits.
|
|
||||||
|
|
||||||
Note that GFP_ZONE_TABLE poses an interesting constraint since
|
|
||||||
include/linux/gfp.h gets included by the 32-bit portion of a 64-bit build.
|
|
||||||
We need to be careful to only build the table for zones that have a
|
|
||||||
corresponding gfp_t flag. GFP_ZONES_SHIFT is introduced for this purpose.
|
|
||||||
This patch does not attempt to solve the problem of adding a new zone
|
|
||||||
that also has a corresponding GFP_ flag.
|
|
||||||
|
|
||||||
Link: https://bugzilla.kernel.org/show_bug.cgi?id=110931
|
|
||||||
Fixes: 033fbae988fc ("mm: ZONE_DEVICE for "device memory"")
|
|
||||||
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
|
|
||||||
Reported-by: Mark <markk@clara.co.uk>
|
|
||||||
Cc: Mel Gorman <mgorman@suse.de>
|
|
||||||
Cc: Rik van Riel <riel@redhat.com>
|
|
||||||
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
|
|
||||||
Cc: Dave Hansen <dave.hansen@linux.intel.com>
|
|
||||||
Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
|
|
||||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
||||||
---
|
|
||||||
arch/x86/Kconfig | 6 ++++--
|
|
||||||
include/linux/gfp.h | 33 ++++++++++++++++++++-------------
|
|
||||||
include/linux/page-flags-layout.h | 2 ++
|
|
||||||
mm/Kconfig | 7 +++++--
|
|
||||||
4 files changed, 31 insertions(+), 17 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
|
||||||
index 3fef519..b94704a 100644
|
|
||||||
--- a/arch/x86/Kconfig
|
|
||||||
+++ b/arch/x86/Kconfig
|
|
||||||
@@ -1409,8 +1409,10 @@ config NUMA_EMU
|
|
||||||
|
|
||||||
config NODES_SHIFT
|
|
||||||
int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
|
|
||||||
- range 1 10
|
|
||||||
- default "10" if MAXSMP
|
|
||||||
+ range 1 10 if !NR_ZONES_EXTENDED
|
|
||||||
+ range 1 9 if NR_ZONES_EXTENDED
|
|
||||||
+ default "10" if MAXSMP && !NR_ZONES_EXTENDED
|
|
||||||
+ default "9" if MAXSMP && NR_ZONES_EXTENDED
|
|
||||||
default "6" if X86_64
|
|
||||||
default "3"
|
|
||||||
depends on NEED_MULTIPLE_NODES
|
|
||||||
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
|
|
||||||
index af1f2b2..d201d8a 100644
|
|
||||||
--- a/include/linux/gfp.h
|
|
||||||
+++ b/include/linux/gfp.h
|
|
||||||
@@ -329,22 +329,29 @@ static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)
|
|
||||||
* 0xe => BAD (MOVABLE+DMA32+HIGHMEM)
|
|
||||||
* 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA)
|
|
||||||
*
|
|
||||||
- * ZONES_SHIFT must be <= 2 on 32 bit platforms.
|
|
||||||
+ * GFP_ZONES_SHIFT must be <= 2 on 32 bit platforms.
|
|
||||||
*/
|
|
||||||
|
|
||||||
-#if 16 * ZONES_SHIFT > BITS_PER_LONG
|
|
||||||
-#error ZONES_SHIFT too large to create GFP_ZONE_TABLE integer
|
|
||||||
+#if defined(CONFIG_ZONE_DEVICE) && (MAX_NR_ZONES-1) <= 4
|
|
||||||
+/* ZONE_DEVICE is not a valid GFP zone specifier */
|
|
||||||
+#define GFP_ZONES_SHIFT 2
|
|
||||||
+#else
|
|
||||||
+#define GFP_ZONES_SHIFT ZONES_SHIFT
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#if 16 * GFP_ZONES_SHIFT > BITS_PER_LONG
|
|
||||||
+#error GFP_ZONES_SHIFT too large to create GFP_ZONE_TABLE integer
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define GFP_ZONE_TABLE ( \
|
|
||||||
- (ZONE_NORMAL << 0 * ZONES_SHIFT) \
|
|
||||||
- | (OPT_ZONE_DMA << ___GFP_DMA * ZONES_SHIFT) \
|
|
||||||
- | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * ZONES_SHIFT) \
|
|
||||||
- | (OPT_ZONE_DMA32 << ___GFP_DMA32 * ZONES_SHIFT) \
|
|
||||||
- | (ZONE_NORMAL << ___GFP_MOVABLE * ZONES_SHIFT) \
|
|
||||||
- | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * ZONES_SHIFT) \
|
|
||||||
- | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * ZONES_SHIFT) \
|
|
||||||
- | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * ZONES_SHIFT) \
|
|
||||||
+ (ZONE_NORMAL << 0 * GFP_ZONES_SHIFT) \
|
|
||||||
+ | (OPT_ZONE_DMA << ___GFP_DMA * GFP_ZONES_SHIFT) \
|
|
||||||
+ | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * GFP_ZONES_SHIFT) \
|
|
||||||
+ | (OPT_ZONE_DMA32 << ___GFP_DMA32 * GFP_ZONES_SHIFT) \
|
|
||||||
+ | (ZONE_NORMAL << ___GFP_MOVABLE * GFP_ZONES_SHIFT) \
|
|
||||||
+ | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * GFP_ZONES_SHIFT) \
|
|
||||||
+ | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * GFP_ZONES_SHIFT) \
|
|
||||||
+ | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * GFP_ZONES_SHIFT) \
|
|
||||||
)
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -369,8 +376,8 @@ static inline enum zone_type gfp_zone(gfp_t flags)
|
|
||||||
enum zone_type z;
|
|
||||||
int bit = (__force int) (flags & GFP_ZONEMASK);
|
|
||||||
|
|
||||||
- z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) &
|
|
||||||
- ((1 << ZONES_SHIFT) - 1);
|
|
||||||
+ z = (GFP_ZONE_TABLE >> (bit * GFP_ZONES_SHIFT)) &
|
|
||||||
+ ((1 << GFP_ZONES_SHIFT) - 1);
|
|
||||||
VM_BUG_ON((GFP_ZONE_BAD >> bit) & 1);
|
|
||||||
return z;
|
|
||||||
}
|
|
||||||
diff --git a/include/linux/page-flags-layout.h b/include/linux/page-flags-layout.h
|
|
||||||
index da52366..77b078c 100644
|
|
||||||
--- a/include/linux/page-flags-layout.h
|
|
||||||
+++ b/include/linux/page-flags-layout.h
|
|
||||||
@@ -17,6 +17,8 @@
|
|
||||||
#define ZONES_SHIFT 1
|
|
||||||
#elif MAX_NR_ZONES <= 4
|
|
||||||
#define ZONES_SHIFT 2
|
|
||||||
+#elif MAX_NR_ZONES <= 8
|
|
||||||
+#define ZONES_SHIFT 3
|
|
||||||
#else
|
|
||||||
#error ZONES_SHIFT -- too many zones configured adjust calculation
|
|
||||||
#endif
|
|
||||||
diff --git a/mm/Kconfig b/mm/Kconfig
|
|
||||||
index 031a329..7826216 100644
|
|
||||||
--- a/mm/Kconfig
|
|
||||||
+++ b/mm/Kconfig
|
|
||||||
@@ -652,8 +652,6 @@ config IDLE_PAGE_TRACKING
|
|
||||||
|
|
||||||
config ZONE_DEVICE
|
|
||||||
bool "Device memory (pmem, etc...) hotplug support"
|
|
||||||
- default !ZONE_DMA
|
|
||||||
- depends on !ZONE_DMA
|
|
||||||
depends on MEMORY_HOTPLUG
|
|
||||||
depends on MEMORY_HOTREMOVE
|
|
||||||
depends on X86_64 #arch_add_memory() comprehends device memory
|
|
||||||
@@ -667,5 +665,10 @@ config ZONE_DEVICE
|
|
||||||
|
|
||||||
If FS_DAX is enabled, then say Y.
|
|
||||||
|
|
||||||
+config NR_ZONES_EXTENDED
|
|
||||||
+ bool
|
|
||||||
+ default n if !64BIT
|
|
||||||
+ default y if ZONE_DEVICE && ZONE_DMA && ZONE_DMA32
|
|
||||||
+
|
|
||||||
config FRAME_VECTOR
|
|
||||||
bool
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
31
ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch
Normal file
31
ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From e36b3efcd07ab5c323e82319577d972ebddcbed1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Date: Fri, 18 Mar 2016 18:01:53 +0100
|
||||||
|
Subject: [PATCH 2/3] ALSA: hda - Fix forgotten HDMI monitor_present update
|
||||||
|
|
||||||
|
We forgot to copy monitor_present value when updating the ELD
|
||||||
|
information. This won't change the ELD retrieval and the jack
|
||||||
|
notification behavior, but appears only in the proc output. In that
|
||||||
|
sense, it's no fatal error, but a bug is a bug is a bug.
|
||||||
|
|
||||||
|
Cc: <stable@vger.kernel.org>
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
sound/pci/hda/patch_hdmi.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||||
|
index 8cdb804aa9cf..e7d9453ecd10 100644
|
||||||
|
--- a/sound/pci/hda/patch_hdmi.c
|
||||||
|
+++ b/sound/pci/hda/patch_hdmi.c
|
||||||
|
@@ -1358,6 +1358,7 @@ static void update_eld(struct hda_codec *codec,
|
||||||
|
eld->eld_size) != 0)
|
||||||
|
eld_changed = true;
|
||||||
|
|
||||||
|
+ pin_eld->monitor_present = eld->monitor_present;
|
||||||
|
pin_eld->eld_valid = eld->eld_valid;
|
||||||
|
pin_eld->eld_size = eld->eld_size;
|
||||||
|
if (eld->eld_valid)
|
||||||
|
--
|
||||||
|
2.5.0
|
||||||
|
|
44
ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch
Normal file
44
ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
From 1f2109de8368f08a353d7862f462b943a5ac4b4a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Date: Fri, 18 Mar 2016 19:45:13 +0100
|
||||||
|
Subject: [PATCH 3/3] ALSA: hda - Fix spurious kernel WARNING on Baytrail HDMI
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
snd_hdac_sync_audio_rate() call is mandatory only for HSW and later
|
||||||
|
models, but we call the function unconditionally blindly assuming that
|
||||||
|
the function doesn't do anything harmful. But since recently, the
|
||||||
|
function checks the validity of the passed pin NID, and eventually
|
||||||
|
spews the warning if an unexpected pin is passed. This is seen on old
|
||||||
|
chips like Baytrail.
|
||||||
|
|
||||||
|
The fix is to limit the call of this function again only for the chips
|
||||||
|
with the proper binding. This can be identified by the same flag as
|
||||||
|
the eld notifier.
|
||||||
|
|
||||||
|
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||||
|
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||||
|
Cc: <stable@vger.kernel.org> # v4.5
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
sound/pci/hda/patch_hdmi.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||||
|
index e7d9453ecd10..56d3575ee6cc 100644
|
||||||
|
--- a/sound/pci/hda/patch_hdmi.c
|
||||||
|
+++ b/sound/pci/hda/patch_hdmi.c
|
||||||
|
@@ -1741,7 +1741,8 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
|
||||||
|
|
||||||
|
/* Call sync_audio_rate to set the N/CTS/M manually if necessary */
|
||||||
|
/* Todo: add DP1.2 MST audio support later */
|
||||||
|
- snd_hdac_sync_audio_rate(&codec->bus->core, pin_nid, runtime->rate);
|
||||||
|
+ if (codec_has_acomp(codec))
|
||||||
|
+ snd_hdac_sync_audio_rate(&codec->bus->core, pin_nid, runtime->rate);
|
||||||
|
|
||||||
|
non_pcm = check_non_pcm_per_cvt(codec, cvt_nid);
|
||||||
|
mutex_lock(&per_pin->lock);
|
||||||
|
--
|
||||||
|
2.5.0
|
||||||
|
|
80
ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch
Normal file
80
ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
From 3fb329b2c3b6c2f009aa1255d2436ec49e49877f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Takashi Iwai <tiwai@suse.de>
|
||||||
|
Date: Fri, 18 Mar 2016 15:10:08 +0100
|
||||||
|
Subject: [PATCH 1/3] ALSA: hda - Really restrict i915 notifier to HSW+
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The commit [b62232d429fa: ALSA: hda - Limit i915 HDMI binding only for
|
||||||
|
HSW and later] tried to limit the usage of i915 audio notifier to the
|
||||||
|
recent Intel models and switch to the old method on pre-Haswell
|
||||||
|
models. However, it assumed that the i915 component binding hasn't
|
||||||
|
been done on such models, and the assumption was wrong: namely,
|
||||||
|
Baytrail had already the i915 component binding due to powerwell
|
||||||
|
control. Thus, the workaround wasn't applied to Baytrail.
|
||||||
|
|
||||||
|
For fixing this properly, this patch introduces a new flag indicating
|
||||||
|
the usage of audio notifier and codec_has_acomp() refers to this flag
|
||||||
|
instead of checking the existence of audio component.
|
||||||
|
|
||||||
|
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||||
|
Cc: <stable@vger.kernel.org> # v4.5
|
||||||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||||
|
---
|
||||||
|
sound/pci/hda/patch_hdmi.c | 24 +++++++++++++++++-------
|
||||||
|
1 file changed, 17 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||||
|
index 49ee4e55dd16..8cdb804aa9cf 100644
|
||||||
|
--- a/sound/pci/hda/patch_hdmi.c
|
||||||
|
+++ b/sound/pci/hda/patch_hdmi.c
|
||||||
|
@@ -152,6 +152,7 @@ struct hdmi_spec {
|
||||||
|
struct hda_pcm_stream pcm_playback;
|
||||||
|
|
||||||
|
/* i915/powerwell (Haswell+/Valleyview+) specific */
|
||||||
|
+ bool use_acomp_notifier; /* use i915 eld_notify callback for hotplug */
|
||||||
|
struct i915_audio_component_audio_ops i915_audio_ops;
|
||||||
|
bool i915_bound; /* was i915 bound in this driver? */
|
||||||
|
|
||||||
|
@@ -159,8 +160,11 @@ struct hdmi_spec {
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_SND_HDA_I915
|
||||||
|
-#define codec_has_acomp(codec) \
|
||||||
|
- ((codec)->bus->core.audio_component != NULL)
|
||||||
|
+static inline bool codec_has_acomp(struct hda_codec *codec)
|
||||||
|
+{
|
||||||
|
+ struct hdmi_spec *spec = codec->spec;
|
||||||
|
+ return spec->use_acomp_notifier;
|
||||||
|
+}
|
||||||
|
#else
|
||||||
|
#define codec_has_acomp(codec) false
|
||||||
|
#endif
|
||||||
|
@@ -2248,12 +2252,18 @@ static int patch_generic_hdmi(struct hda_codec *codec)
|
||||||
|
codec->spec = spec;
|
||||||
|
hdmi_array_init(spec, 4);
|
||||||
|
|
||||||
|
+#ifdef CONFIG_SND_HDA_I915
|
||||||
|
/* Try to bind with i915 for Intel HSW+ codecs (if not done yet) */
|
||||||
|
- if (!codec_has_acomp(codec) &&
|
||||||
|
- (codec->core.vendor_id >> 16) == 0x8086 &&
|
||||||
|
- is_haswell_plus(codec))
|
||||||
|
- if (!snd_hdac_i915_init(&codec->bus->core))
|
||||||
|
- spec->i915_bound = true;
|
||||||
|
+ if ((codec->core.vendor_id >> 16) == 0x8086 &&
|
||||||
|
+ is_haswell_plus(codec)) {
|
||||||
|
+ if (!codec->bus->core.audio_component)
|
||||||
|
+ if (!snd_hdac_i915_init(&codec->bus->core))
|
||||||
|
+ spec->i915_bound = true;
|
||||||
|
+ /* use i915 audio component notifier for hotplug */
|
||||||
|
+ if (codec->bus->core.audio_component)
|
||||||
|
+ spec->use_acomp_notifier = true;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (is_haswell_plus(codec)) {
|
||||||
|
intel_haswell_enable_all_pins(codec, true);
|
||||||
|
--
|
||||||
|
2.5.0
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From 3620ebad64a327113bed34edefd45c3605086fc6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
|
||||||
Date: Mon, 14 Mar 2016 10:38:31 -0400
|
|
||||||
Subject: [PATCH] USB: iowarrior: fix oops with malicious USB descriptors
|
|
||||||
|
|
||||||
The iowarrior driver expects at least one valid endpoint. If given
|
|
||||||
malicious descriptors that specify 0 for the number of endpoints,
|
|
||||||
it will crash in the probe function. Ensure there is at least
|
|
||||||
one endpoint on the interface before using it.
|
|
||||||
|
|
||||||
The full report of this issue can be found here:
|
|
||||||
http://seclists.org/bugtraq/2016/Mar/87
|
|
||||||
|
|
||||||
Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
|
|
||||||
Cc: stable <stable@vger.kernel.org>
|
|
||||||
Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
|
|
||||||
---
|
|
||||||
drivers/usb/misc/iowarrior.c | 6 ++++++
|
|
||||||
1 file changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/usb/misc/iowarrior.c b/drivers/usb/misc/iowarrior.c
|
|
||||||
index c6bfd13f6c92..1950e87b4219 100644
|
|
||||||
--- a/drivers/usb/misc/iowarrior.c
|
|
||||||
+++ b/drivers/usb/misc/iowarrior.c
|
|
||||||
@@ -787,6 +787,12 @@ static int iowarrior_probe(struct usb_interface *interface,
|
|
||||||
iface_desc = interface->cur_altsetting;
|
|
||||||
dev->product_id = le16_to_cpu(udev->descriptor.idProduct);
|
|
||||||
|
|
||||||
+ if (iface_desc->desc.bNumEndpoints < 1) {
|
|
||||||
+ dev_err(&interface->dev, "Invalid number of endpoints\n");
|
|
||||||
+ retval = -EINVAL;
|
|
||||||
+ goto error;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* set up the endpoint information */
|
|
||||||
for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
|
|
||||||
endpoint = &iface_desc->endpoint[i].desc;
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
From e6a87f147002fa16adcbafebbc458ff90a463474 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Oliver Neukum <oneukum@suse.com>
|
|
||||||
Date: Tue, 15 Mar 2016 10:14:04 +0100
|
|
||||||
Subject: [PATCH] cdc-acm: more sanity checking
|
|
||||||
|
|
||||||
An attack has become available which pretends to be a quirky
|
|
||||||
device circumventing normal sanity checks and crashes the kernel
|
|
||||||
by an insufficient number of interfaces. This patch adds a check
|
|
||||||
to the code path for quirky devices.
|
|
||||||
|
|
||||||
Signed-off-by: Oliver Neukum <ONeukum@suse.com>
|
|
||||||
CC: stable@vger.kernel.org
|
|
||||||
---
|
|
||||||
drivers/usb/class/cdc-acm.c | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
|
|
||||||
index 26ca4f910cb0..a7732f80a912 100644
|
|
||||||
--- a/drivers/usb/class/cdc-acm.c
|
|
||||||
+++ b/drivers/usb/class/cdc-acm.c
|
|
||||||
@@ -1113,6 +1113,9 @@ static int acm_probe(struct usb_interface *intf,
|
|
||||||
if (quirks == NO_UNION_NORMAL) {
|
|
||||||
data_interface = usb_ifnum_to_if(usb_dev, 1);
|
|
||||||
control_interface = usb_ifnum_to_if(usb_dev, 0);
|
|
||||||
+ /* we would crash */
|
|
||||||
+ if (!data_interface || !control_interface)
|
|
||||||
+ return -ENODEV;
|
|
||||||
goto skip_normal_probe;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -4886,6 +4886,7 @@ CONFIG_LATENCYTOP=y
|
|||||||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||||
CONFIG_EARLY_PRINTK_DBGP=y
|
CONFIG_EARLY_PRINTK_DBGP=y
|
||||||
# CONFIG_PAGE_POISONING is not set
|
# CONFIG_PAGE_POISONING is not set
|
||||||
|
# CONFIG_DEBUG_PAGE_REF is not set
|
||||||
CONFIG_CRASH=m
|
CONFIG_CRASH=m
|
||||||
CONFIG_CRASH_DUMP=y
|
CONFIG_CRASH_DUMP=y
|
||||||
# CONFIG_GCOV_KERNEL is not set
|
# CONFIG_GCOV_KERNEL is not set
|
||||||
@ -5748,7 +5749,7 @@ CONFIG_ZBUD=y
|
|||||||
CONFIG_ZSMALLOC=y
|
CONFIG_ZSMALLOC=y
|
||||||
# CONFIG_ZSMALLOC_STAT is not set
|
# CONFIG_ZSMALLOC_STAT is not set
|
||||||
# CONFIG_PGTABLE_MAPPING is not set
|
# CONFIG_PGTABLE_MAPPING is not set
|
||||||
|
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
|
||||||
# CONFIG_IDLE_PAGE_TRACKING is not set
|
# CONFIG_IDLE_PAGE_TRACKING is not set
|
||||||
|
|
||||||
# CONFIG_MDIO_GPIO is not set
|
# CONFIG_MDIO_GPIO is not set
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 888ba9b2a02e8d144c3a9ae5e01a1a94280cd2bf Mon Sep 17 00:00:00 2001
|
From 78bd7226c92c8309d1c6c1378f1224dcd591b49f Mon Sep 17 00:00:00 2001
|
||||||
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
|
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
|
||||||
Date: Fri, 22 Jan 2016 13:03:36 -0600
|
Date: Fri, 22 Jan 2016 13:03:36 -0600
|
||||||
Subject: [PATCH] Make ZONE_DMA not depend on CONFIG_EXPERT
|
Subject: [PATCH] Make ZONE_DMA not depend on CONFIG_EXPERT
|
||||||
@ -13,10 +13,10 @@ Signed-off-by: Justin Forbes <jforbes@fedoraproject.org>
|
|||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
||||||
index a02c842..ea2eaeb 100644
|
index 3c74b549ea9a..8a5b7b8cc425 100644
|
||||||
--- a/arch/x86/Kconfig
|
--- a/arch/x86/Kconfig
|
||||||
+++ b/arch/x86/Kconfig
|
+++ b/arch/x86/Kconfig
|
||||||
@@ -315,7 +315,7 @@ source "kernel/Kconfig.freezer"
|
@@ -318,7 +318,7 @@ source "kernel/Kconfig.freezer"
|
||||||
menu "Processor type and features"
|
menu "Processor type and features"
|
||||||
|
|
||||||
config ZONE_DMA
|
config ZONE_DMA
|
||||||
@ -26,7 +26,7 @@ index a02c842..ea2eaeb 100644
|
|||||||
help
|
help
|
||||||
DMA memory allocation support allows devices with less than 32-bit
|
DMA memory allocation support allows devices with less than 32-bit
|
||||||
diff --git a/mm/Kconfig b/mm/Kconfig
|
diff --git a/mm/Kconfig b/mm/Kconfig
|
||||||
index 97a4e06..26bbbe0 100644
|
index 05efa6a5199e..c1a01e50c293 100644
|
||||||
--- a/mm/Kconfig
|
--- a/mm/Kconfig
|
||||||
+++ b/mm/Kconfig
|
+++ b/mm/Kconfig
|
||||||
@@ -650,7 +650,7 @@ config IDLE_PAGE_TRACKING
|
@@ -650,7 +650,7 @@ config IDLE_PAGE_TRACKING
|
||||||
@ -35,9 +35,9 @@ index 97a4e06..26bbbe0 100644
|
|||||||
config ZONE_DEVICE
|
config ZONE_DEVICE
|
||||||
- bool "Device memory (pmem, etc...) hotplug support" if EXPERT
|
- bool "Device memory (pmem, etc...) hotplug support" if EXPERT
|
||||||
+ bool "Device memory (pmem, etc...) hotplug support"
|
+ bool "Device memory (pmem, etc...) hotplug support"
|
||||||
default !ZONE_DMA
|
|
||||||
depends on !ZONE_DMA
|
|
||||||
depends on MEMORY_HOTPLUG
|
depends on MEMORY_HOTPLUG
|
||||||
|
depends on MEMORY_HOTREMOVE
|
||||||
|
depends on SPARSEMEM_VMEMMAP
|
||||||
--
|
--
|
||||||
2.5.0
|
2.5.0
|
||||||
|
|
||||||
|
2
gitrev
2
gitrev
@ -1 +1 @@
|
|||||||
f7813ad5cbfd1fab2899914281b72a1ba0805c80
|
6b5f04b6cf8ebab9a65d9c0026c650bb2538fd0f
|
||||||
|
22
kernel.spec
22
kernel.spec
@ -69,7 +69,7 @@ Summary: The Linux kernel
|
|||||||
# The rc snapshot level
|
# The rc snapshot level
|
||||||
%define rcrev 0
|
%define rcrev 0
|
||||||
# The git snapshot level
|
# The git snapshot level
|
||||||
%define gitrev 11
|
%define gitrev 12
|
||||||
# Set rpm version accordingly
|
# Set rpm version accordingly
|
||||||
%define rpmversion 4.%{upstream_sublevel}.0
|
%define rpmversion 4.%{upstream_sublevel}.0
|
||||||
%endif
|
%endif
|
||||||
@ -608,9 +608,6 @@ Patch621: drm-udl-Use-unlocked-gem-unreferencing.patch
|
|||||||
#Required for some persistent memory options
|
#Required for some persistent memory options
|
||||||
Patch641: disable-CONFIG_EXPERT-for-ZONE_DMA.patch
|
Patch641: disable-CONFIG_EXPERT-for-ZONE_DMA.patch
|
||||||
|
|
||||||
#rhbz 1309658
|
|
||||||
Patch648: 0001-mm-CONFIG_NR_ZONES_EXTENDED.patch
|
|
||||||
|
|
||||||
#rhbz 1316136
|
#rhbz 1316136
|
||||||
Patch663: USB-serial-ftdi_sio-Add-support-for-ICP-DAS-I-756xU-.patch
|
Patch663: USB-serial-ftdi_sio-Add-support-for-ICP-DAS-I-756xU-.patch
|
||||||
|
|
||||||
@ -631,20 +628,15 @@ Patch668: x86-tsc-Prevent-NULL-pointer-deref-in-calibrate_dela.patch
|
|||||||
#CVE-2016-3137 rhbz 1317010 1316996
|
#CVE-2016-3137 rhbz 1317010 1316996
|
||||||
Patch672: cypress_m8-add-sanity-checking.patch
|
Patch672: cypress_m8-add-sanity-checking.patch
|
||||||
|
|
||||||
#CVE-2016-2188 rhbz 1317018 1317467
|
|
||||||
Patch674: USB-iowarrior-fix-oops-with-malicious-USB-descriptor.patch
|
|
||||||
|
|
||||||
#CVE-2016-2185 rhbz 1317014 1317471
|
|
||||||
Patch675: usb_driver_claim_interface-add-sanity-checking.patch
|
|
||||||
|
|
||||||
#CVE-2016-3138 rhbz 1317010 1316204
|
|
||||||
Patch676: cdc-acm-more-sanity-checking.patch
|
|
||||||
|
|
||||||
#CVE-2016-3140 rhbz 1317010 1316995
|
#CVE-2016-3140 rhbz 1317010 1316995
|
||||||
Patch677: digi_acceleport-do-sanity-checking-for-the-number-of.patch
|
Patch677: digi_acceleport-do-sanity-checking-for-the-number-of.patch
|
||||||
|
|
||||||
Patch678: ims-pcu-sanity-check-against-missing-interfaces.patch
|
Patch678: ims-pcu-sanity-check-against-missing-interfaces.patch
|
||||||
|
|
||||||
|
Patch680: ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch
|
||||||
|
Patch681: ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch
|
||||||
|
Patch682: ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch
|
||||||
|
|
||||||
# END OF PATCH DEFINITIONS
|
# END OF PATCH DEFINITIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -2167,6 +2159,10 @@ fi
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Mar 19 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git12.1
|
||||||
|
- Linux v4.5-6486-g6b5f04b6cf8e
|
||||||
|
- cgroup, libata, workqueue, block, akpm, usb merges
|
||||||
|
|
||||||
* Sat Mar 19 2016 Peter Robinson <pbrobinson@fedoraproject.org>
|
* Sat Mar 19 2016 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||||
- Minor ARM cleanups
|
- Minor ARM cleanups
|
||||||
- Drop ARM_PATCH_IDIV work around
|
- Drop ARM_PATCH_IDIV work around
|
||||||
|
1
sources
1
sources
@ -1,3 +1,4 @@
|
|||||||
a60d48eee08ec0536d5efb17ca819aef linux-4.5.tar.xz
|
a60d48eee08ec0536d5efb17ca819aef linux-4.5.tar.xz
|
||||||
6f557fe90b800b615c85c2ca04da6154 perf-man-4.5.tar.gz
|
6f557fe90b800b615c85c2ca04da6154 perf-man-4.5.tar.gz
|
||||||
085abf64e5402f2b588b9c64f09a6f44 patch-4.5-git11.xz
|
085abf64e5402f2b588b9c64f09a6f44 patch-4.5-git11.xz
|
||||||
|
54b8c38a01b8b328cb65758b15e1b972 patch-4.5-git12.xz
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
From de0784bdf6314b70c69416d8c576eb83237d5b1e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Oliver Neukum <oneukum@suse.com>
|
|
||||||
Date: Wed, 16 Mar 2016 12:26:17 -0400
|
|
||||||
Subject: [PATCH] usb_driver_claim_interface: add sanity checking
|
|
||||||
|
|
||||||
Attacks that trick drivers into passing a NULL pointer
|
|
||||||
to usb_driver_claim_interface() using forged descriptors are
|
|
||||||
known. This thwarts them by sanity checking.
|
|
||||||
|
|
||||||
Signed-off-by: Oliver Neukum <ONeukum@suse.com>
|
|
||||||
CC: stable@vger.kernel.org
|
|
||||||
---
|
|
||||||
drivers/usb/core/driver.c | 6 +++++-
|
|
||||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
|
|
||||||
index 6b5063e7943f..e2d242b68d4b 100644
|
|
||||||
--- a/drivers/usb/core/driver.c
|
|
||||||
+++ b/drivers/usb/core/driver.c
|
|
||||||
@@ -500,11 +500,15 @@ static int usb_unbind_interface(struct device *dev)
|
|
||||||
int usb_driver_claim_interface(struct usb_driver *driver,
|
|
||||||
struct usb_interface *iface, void *priv)
|
|
||||||
{
|
|
||||||
- struct device *dev = &iface->dev;
|
|
||||||
+ struct device *dev;
|
|
||||||
struct usb_device *udev;
|
|
||||||
int retval = 0;
|
|
||||||
int lpm_disable_error;
|
|
||||||
|
|
||||||
+ if (!iface)
|
|
||||||
+ return -ENODEV;
|
|
||||||
+
|
|
||||||
+ dev = &iface->dev;
|
|
||||||
if (dev->driver)
|
|
||||||
return -EBUSY;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user