Hello community,

here is the log from the commit of package kernel-source for openSUSE:Factory 
checked in at 2016-03-29 09:54:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source (Old)
 and      /work/SRC/openSUSE:Factory/.kernel-source.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kernel-source"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes       
2016-03-17 16:49:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes  
2016-03-29 09:54:53.000000000 +0200
@@ -1,0 +2,38 @@
+Fri Mar 18 21:35:24 CET 2016 - ti...@suse.de
+
+- ALSA: hda - Fix spurious kernel WARNING on Baytrail HDMI
+  (boo#971737).
+- ALSA: hda - Fix forgotten HDMI monitor_present update
+  (boo#971737).
+- ALSA: hda - Really restrict i915 notifier to HSW+ (boo#971737).
+- commit 9ebd8b6
+
+-------------------------------------------------------------------
+Fri Mar 18 16:21:45 CET 2016 - h...@suse.de
+
+- Update config files: Enable CONFIG_BLK_DEV_NVME_SCSI (bsc#965497)
+- commit 766f032
+
+-------------------------------------------------------------------
+Fri Mar 18 13:33:44 CET 2016 - jsl...@suse.cz
+
+- net: irda: Fix use-after-free in irtty_open() (bnc#967903).
+- commit ff61c16
+
+-------------------------------------------------------------------
+Fri Mar 18 10:45:00 CET 2016 - ti...@suse.de
+
+- ALSA: hda - Limit i915 HDMI binding only for HSW and later
+  (boo#971737).
+- ALSA: hda - Don't handle ELD notify from invalid port
+  (boo#971737).
+- commit a6b682e
+
+-------------------------------------------------------------------
+Thu Mar 17 11:37:09 CET 2016 - ti...@suse.de
+
+- ALSA: hda - Fix unexpected resume through regmap code path
+  (bsc#969383).
+- commit 56796b8
+
+-------------------------------------------------------------------
kernel-default.changes: same change
kernel-docs.changes: same change
kernel-lpae.changes: same change
kernel-obs-build.changes: same change
kernel-obs-qa.changes: same change
kernel-pae.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:58.000000000 +0200
@@ -63,7 +63,7 @@
 Group:          System/Kernel
 Version:        4.5.0
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb2c9ae5
+Release:        <RELEASE>.gece3ff2
 %else
 Release:        0
 %endif

kernel-default.spec: same change
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:58.000000000 +0200
@@ -29,7 +29,7 @@
 Group:          Documentation/Man
 Version:        4.5.0
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb2c9ae5
+Release:        <RELEASE>.gece3ff2
 %else
 Release:        0
 %endif

++++++ kernel-lpae.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:58.000000000 +0200
@@ -63,7 +63,7 @@
 Group:          System/Kernel
 Version:        4.5.0
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb2c9ae5
+Release:        <RELEASE>.gece3ff2
 %else
 Release:        0
 %endif

++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:58.000000000 +0200
@@ -53,7 +53,7 @@
 Group:          SLES
 Version:        4.5.0
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb2c9ae5
+Release:        <RELEASE>.gece3ff2
 %else
 Release:        0
 %endif

kernel-obs-qa.spec: same change
++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:58.000000000 +0200
@@ -63,7 +63,7 @@
 Group:          System/Kernel
 Version:        4.5.0
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb2c9ae5
+Release:        <RELEASE>.gece3ff2
 %else
 Release:        0
 %endif

++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:58.000000000 +0200
@@ -32,7 +32,7 @@
 Group:          Development/Sources
 Version:        4.5.0
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb2c9ae5
+Release:        <RELEASE>.gece3ff2
 %else
 Release:        0
 %endif

++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:58.000000000 +0200
@@ -27,7 +27,7 @@
 Version:        4.5.0
 %if %using_buildservice
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb2c9ae5
+Release:        <RELEASE>.gece3ff2
 %else
 Release:        0
 %endif

++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:58.000000000 +0200
@@ -63,7 +63,7 @@
 Group:          System/Kernel
 Version:        4.5.0
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gb2c9ae5
+Release:        <RELEASE>.gece3ff2
 %else
 Release:        0
 %endif

++++++ config.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/arm64/default new/config/arm64/default
--- old/config/arm64/default    2016-03-14 06:14:55.000000000 +0100
+++ new/config/arm64/default    2016-03-18 16:23:56.000000000 +0100
@@ -1733,7 +1733,7 @@
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
 CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
 
 #
 # Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64/debug new/config/ppc64/debug
--- old/config/ppc64/debug      2016-03-14 06:14:55.000000000 +0100
+++ new/config/ppc64/debug      2016-03-18 16:23:56.000000000 +0100
@@ -1636,7 +1636,7 @@
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
 CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
 
 #
 # Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64/default new/config/ppc64/default
--- old/config/ppc64/default    2016-03-14 06:14:55.000000000 +0100
+++ new/config/ppc64/default    2016-03-18 16:23:56.000000000 +0100
@@ -1625,7 +1625,7 @@
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
 CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
 
 #
 # Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64le/debug new/config/ppc64le/debug
--- old/config/ppc64le/debug    2016-03-14 06:14:55.000000000 +0100
+++ new/config/ppc64le/debug    2016-03-18 16:23:56.000000000 +0100
@@ -1544,7 +1544,7 @@
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
 CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
 
 #
 # Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64le/default new/config/ppc64le/default
--- old/config/ppc64le/default  2016-03-14 06:14:55.000000000 +0100
+++ new/config/ppc64le/default  2016-03-18 16:23:56.000000000 +0100
@@ -1533,7 +1533,7 @@
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
 CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
 
 #
 # Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/s390x/default new/config/s390x/default
--- old/config/s390x/default    2016-03-14 06:14:55.000000000 +0100
+++ new/config/s390x/default    2016-03-18 16:23:56.000000000 +0100
@@ -1234,7 +1234,7 @@
 CONFIG_BLK_DEV_RBD=m
 # CONFIG_BLK_DEV_RSXX is not set
 CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
 
 #
 # Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/x86_64/debug new/config/x86_64/debug
--- old/config/x86_64/debug     2016-03-14 06:14:55.000000000 +0100
+++ new/config/x86_64/debug     2016-03-18 16:23:56.000000000 +0100
@@ -1997,7 +1997,7 @@
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
 CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
 
 #
 # Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/x86_64/default new/config/x86_64/default
--- old/config/x86_64/default   2016-03-14 06:14:55.000000000 +0100
+++ new/config/x86_64/default   2016-03-18 16:23:56.000000000 +0100
@@ -1983,7 +1983,7 @@
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
 CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
 
 #
 # Misc devices

++++++ patches.drivers.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port 
new/patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port
--- old/patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port      
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port      
2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,39 @@
+From 4f8e4f3537cafc4de128e6bfdf83baa78bc60eb1 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <ti...@suse.de>
+Date: Thu, 10 Mar 2016 12:02:49 +0100
+Subject: [PATCH] ALSA: hda - Don't handle ELD notify from invalid port
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: 4f8e4f3537cafc4de128e6bfdf83baa78bc60eb1
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+
+The current Intel HDMI codec driver supports only three fixed ports
+from port B to port D.  However, i915 driver may assign a DP on other
+ports, e.g. port A, when no eDP is used.  This incompatibility is
+caught later at pin_nid_to_pin_index() and results in a warning
+message like "HDMI: pin nid 4 not registered" at each time.
+
+This patch filters out such invalid events beforehand, so that the
+kernel won't be too grumbling.
+
+Reported-by: Stefan Assmann <sassm...@kpanic.de>
+Cc: <sta...@vger.kernel.org>
+Signed-off-by: Takashi Iwai <ti...@suse.de>
+
+---
+ sound/pci/hda/patch_hdmi.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -2432,6 +2432,10 @@ static void intel_pin_eld_notify(void *a
+       struct hda_codec *codec = audio_ptr;
+       int pin_nid = port + 0x04;
+ 
++      /* we assume only from port-B to port-D */
++      if (port < 1 || port > 3)
++              return;
++
+       /* skip notification during system suspend (but not in runtime PM);
+        * the state will be updated at resume
+        */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update 
new/patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update
--- old/patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update      
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update      
2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,31 @@
+From bd48128539ab89986b24ad08ecd3e027dd1993a1 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <ti...@suse.de>
+Date: Fri, 18 Mar 2016 18:01:53 +0100
+Subject: [PATCH] ALSA: hda - Fix forgotten HDMI monitor_present update
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: bd48128539ab89986b24ad08ecd3e027dd1993a1
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+
+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: <sta...@vger.kernel.org>
+Signed-off-by: Takashi Iwai <ti...@suse.de>
+
+---
+ sound/pci/hda/patch_hdmi.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1566,6 +1566,7 @@ static void update_eld(struct hda_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)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM 
new/patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM
--- old/patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM    
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM    
2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,44 @@
+From 93a9ff151754fbdf951b1b993bcf96453f6e36b3 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <ti...@suse.de>
+Date: Fri, 18 Mar 2016 19:45:13 +0100
+Subject: [PATCH] ALSA: hda - Fix spurious kernel WARNING on Baytrail HDMI
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: 93a9ff151754fbdf951b1b993bcf96453f6e36b3
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+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.syrj...@linux.intel.com>
+Tested-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
+Cc: <sta...@vger.kernel.org> # v4.5
+Signed-off-by: Takashi Iwai <ti...@suse.de>
+
+---
+ sound/pci/hda/patch_hdmi.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1878,7 +1878,8 @@ static int generic_hdmi_playback_pcm_pre
+ 
+       /* 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);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p 
new/patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p
--- old/patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p    
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p    
2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,205 @@
+From fc4f000bf8c0cbf38f44de6bd5e225574e572ed4 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <ti...@suse.de>
+Date: Fri, 4 Mar 2016 11:34:18 +0100
+Subject: [PATCH] ALSA: hda - Fix unexpected resume through regmap code path
+Git-commit: fc4f000bf8c0cbf38f44de6bd5e225574e572ed4
+Patch-mainline: Queued in subsystem maintainer repository
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: bsc#969383
+
+HD-audio driver has a mechanism to trigger the runtime resume
+automatically at accessing the verbs.  This auto-resume, however,
+causes the mutex deadlock when invoked from the regmap handler since
+the regmap keeps the mutex while auto-resuming.  For avoiding that,
+there is some tricky check in the HDA regmap handler to return -EAGAIN
+error to back-off when the codec is powered down.  Then the caller of
+regmap r/w will retry after properly turning on the codec power.
+
+This works in most cases, but there seems a slight race between the
+codec power check and the actual on-demand auto-resume trigger.  This
+resulted in the lockdep splat, eventually leading to a real deadlock.
+
+This patch tries to address the race window by getting the runtime PM
+refcount at the check time using pm_runtime_get_if_in_use().  With
+this call, we can keep the power on only when the codec has been
+already turned on, and back off if not.
+
+For keeping the code consistency, the code touching the runtime PM is
+stored in hdac_device.c although it's used only locally in
+hdac_regmap.c.
+
+Reported-by: Jiri Slaby <jsl...@suse.cz>
+Cc: <sta...@vger.kernel.org>
+Signed-off-by: Takashi Iwai <ti...@suse.de>
+
+---
+ include/sound/hdaudio.h |    2 +
+ sound/hda/hdac_device.c |   16 +++++++++++
+ sound/hda/hdac_regmap.c |   69 
++++++++++++++++++++++++++++++++----------------
+ 3 files changed, 64 insertions(+), 23 deletions(-)
+
+--- a/include/sound/hdaudio.h
++++ b/include/sound/hdaudio.h
+@@ -168,11 +168,13 @@ int snd_hdac_power_up(struct hdac_device
+ int snd_hdac_power_down(struct hdac_device *codec);
+ int snd_hdac_power_up_pm(struct hdac_device *codec);
+ int snd_hdac_power_down_pm(struct hdac_device *codec);
++int snd_hdac_keep_power_up(struct hdac_device *codec);
+ #else
+ static inline int snd_hdac_power_up(struct hdac_device *codec) { return 0; }
+ static inline int snd_hdac_power_down(struct hdac_device *codec) { return 0; }
+ static inline int snd_hdac_power_up_pm(struct hdac_device *codec) { return 0; 
}
+ static inline int snd_hdac_power_down_pm(struct hdac_device *codec) { return 
0; }
++static inline int snd_hdac_keep_power_up(struct hdac_device *codec) { return 
0; }
+ #endif
+ 
+ /*
+--- a/sound/hda/hdac_device.c
++++ b/sound/hda/hdac_device.c
+@@ -611,6 +611,22 @@ int snd_hdac_power_up_pm(struct hdac_dev
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_power_up_pm);
+ 
++/* like snd_hdac_power_up_pm(), but only increment the pm count when
++ * already powered up.  Returns -1 if not powered up, 1 if incremented
++ * or 0 if unchanged.  Only used in hdac_regmap.c
++ */
++int snd_hdac_keep_power_up(struct hdac_device *codec)
++{
++      if (!atomic_inc_not_zero(&codec->in_pm)) {
++              int ret = pm_runtime_get_if_in_use(&codec->dev);
++              if (!ret)
++                      return -1;
++              if (ret < 0)
++                      return 0;
++      }
++      return 1;
++}
++
+ /**
+  * snd_hdac_power_down_pm - power down the codec
+  * @codec: the codec object
+--- a/sound/hda/hdac_regmap.c
++++ b/sound/hda/hdac_regmap.c
+@@ -21,13 +21,16 @@
+ #include <sound/hdaudio.h>
+ #include <sound/hda_regmap.h>
+ 
+-#ifdef CONFIG_PM
+-#define codec_is_running(codec)                               \
+-      (atomic_read(&(codec)->in_pm) ||                \
+-       !pm_runtime_suspended(&(codec)->dev))
+-#else
+-#define codec_is_running(codec)               true
+-#endif
++static int codec_pm_lock(struct hdac_device *codec)
++{
++      return snd_hdac_keep_power_up(codec);
++}
++
++static void codec_pm_unlock(struct hdac_device *codec, int lock)
++{
++      if (lock == 1)
++              snd_hdac_power_down_pm(codec);
++}
+ 
+ #define get_verb(reg) (((reg) >> 8) & 0xfff)
+ 
+@@ -238,20 +241,28 @@ static int hda_reg_read(void *context, u
+       struct hdac_device *codec = context;
+       int verb = get_verb(reg);
+       int err;
++      int pm_lock = 0;
+ 
+-      if (!codec_is_running(codec) && verb != AC_VERB_GET_POWER_STATE)
+-              return -EAGAIN;
++      if (verb != AC_VERB_GET_POWER_STATE) {
++              pm_lock = codec_pm_lock(codec);
++              if (pm_lock < 0)
++                      return -EAGAIN;
++      }
+       reg |= (codec->addr << 28);
+-      if (is_stereo_amp_verb(reg))
+-              return hda_reg_read_stereo_amp(codec, reg, val);
+-      if (verb == AC_VERB_GET_PROC_COEF)
+-              return hda_reg_read_coef(codec, reg, val);
++      if (is_stereo_amp_verb(reg)) {
++              err = hda_reg_read_stereo_amp(codec, reg, val);
++              goto out;
++      }
++      if (verb == AC_VERB_GET_PROC_COEF) {
++              err = hda_reg_read_coef(codec, reg, val);
++              goto out;
++      }
+       if ((verb & 0x700) == AC_VERB_SET_AMP_GAIN_MUTE)
+               reg &= ~AC_AMP_FAKE_MUTE;
+ 
+       err = snd_hdac_exec_verb(codec, reg, 0, val);
+       if (err < 0)
+-              return err;
++              goto out;
+       /* special handling for asymmetric reads */
+       if (verb == AC_VERB_GET_POWER_STATE) {
+               if (*val & AC_PWRST_ERROR)
+@@ -259,7 +270,9 @@ static int hda_reg_read(void *context, u
+               else /* take only the actual state */
+                       *val = (*val >> 4) & 0x0f;
+       }
+-      return 0;
++ out:
++      codec_pm_unlock(codec, pm_lock);
++      return err;
+ }
+ 
+ static int hda_reg_write(void *context, unsigned int reg, unsigned int val)
+@@ -267,6 +280,7 @@ static int hda_reg_write(void *context,
+       struct hdac_device *codec = context;
+       unsigned int verb;
+       int i, bytes, err;
++      int pm_lock = 0;
+ 
+       if (codec->caps_overwriting)
+               return 0;
+@@ -275,14 +289,21 @@ static int hda_reg_write(void *context,
+       reg |= (codec->addr << 28);
+       verb = get_verb(reg);
+ 
+-      if (!codec_is_running(codec) && verb != AC_VERB_SET_POWER_STATE)
+-              return codec->lazy_cache ? 0 : -EAGAIN;
++      if (verb != AC_VERB_SET_POWER_STATE) {
++              pm_lock = codec_pm_lock(codec);
++              if (pm_lock < 0)
++                      return codec->lazy_cache ? 0 : -EAGAIN;
++      }
+ 
+-      if (is_stereo_amp_verb(reg))
+-              return hda_reg_write_stereo_amp(codec, reg, val);
++      if (is_stereo_amp_verb(reg)) {
++              err = hda_reg_write_stereo_amp(codec, reg, val);
++              goto out;
++      }
+ 
+-      if (verb == AC_VERB_SET_PROC_COEF)
+-              return hda_reg_write_coef(codec, reg, val);
++      if (verb == AC_VERB_SET_PROC_COEF) {
++              err = hda_reg_write_coef(codec, reg, val);
++              goto out;
++      }
+ 
+       switch (verb & 0xf00) {
+       case AC_VERB_SET_AMP_GAIN_MUTE:
+@@ -319,10 +340,12 @@ static int hda_reg_write(void *context,
+               reg |= (verb + i) << 8 | ((val >> (8 * i)) & 0xff);
+               err = snd_hdac_exec_verb(codec, reg, 0, NULL);
+               if (err < 0)
+-                      return err;
++                      goto out;
+       }
+ 
+-      return 0;
++ out:
++      codec_pm_unlock(codec, pm_lock);
++      return err;
+ }
+ 
+ static const struct regmap_config hda_regmap_cfg = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la 
new/patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la
--- old/patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la    
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la    
2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,43 @@
+From b62232d429fa8b1dcf5d8503aa5a5397a03e646a Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <ti...@suse.de>
+Date: Tue, 15 Mar 2016 18:15:26 +0100
+Subject: [PATCH] ALSA: hda - Limit i915 HDMI binding only for HSW and later
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: b62232d429fa8b1dcf5d8503aa5a5397a03e646a
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+Mime-version: 1.0
+Content-type: text/plain; charset=UTF-8
+Content-transfer-encoding: 8bit
+
+It turned out that the pre-HSW Intel chips are incompatible with the
+naive assumption we had -- the fixed mapping between the port and the
+HD-audio widget.  This may result in the bad access, as captured by
+the recent patch to add a WARN_ON() for the port mapping check.
+
+As a quick workaround, disable the i915 audio component binding for
+all pre-Haswell models.
+
+Reported-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
+Cc: <sta...@vger.kernel.org> # v4.5
+Signed-off-by: Takashi Iwai <ti...@suse.de>
+
+---
+ sound/pci/hda/patch_hdmi.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -2460,9 +2460,10 @@ static int patch_generic_hdmi(struct hda
+       codec->spec = spec;
+       hdmi_array_init(spec, 4);
+ 
+-      /* Try to bind with i915 for any Intel codecs (if not done yet) */
++      /* Try to bind with i915 for Intel HSW+ codecs (if not done yet) */
+       if (!codec_has_acomp(codec) &&
+-          (codec->core.vendor_id >> 16) == 0x8086)
++          (codec->core.vendor_id >> 16) == 0x8086 &&
++          is_haswell_plus(codec))
+               if (!snd_hdac_i915_init(&codec->bus->core))
+                       spec->i915_bound = true;
+ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW 
new/patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW
--- old/patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW   
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW   
2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,78 @@
+From 691be973c0621255abb31572a98e35c57be70212 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <ti...@suse.de>
+Date: Fri, 18 Mar 2016 15:10:08 +0100
+Subject: [PATCH] ALSA: hda - Really restrict i915 notifier to HSW+
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: 691be973c0621255abb31572a98e35c57be70212
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+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.syrj...@linux.intel.com>
+Cc: <sta...@vger.kernel.org> # v4.5
+Signed-off-by: Takashi Iwai <ti...@suse.de>
+
+---
+ sound/pci/hda/patch_hdmi.c |   24 +++++++++++++++++-------
+ 1 file changed, 17 insertions(+), 7 deletions(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -152,13 +152,17 @@ 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? */
+ };
+ 
+ #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
+@@ -2460,12 +2464,18 @@ static int patch_generic_hdmi(struct hda
+       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);

++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch 
new/patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch
--- old/patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch   
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch   
2016-03-18 13:33:44.000000000 +0100
@@ -0,0 +1,69 @@
+From: Peter Hurley <pe...@hurleysoftware.com>
+Date: Sat, 9 Jan 2016 17:48:45 -0800
+Subject: net: irda: Fix use-after-free in irtty_open()
+Patch-mainline: v4.6-rc1
+Git-commit: 401879c57f01cbf2da204ad2e8db910525c6dbea
+References: bnc#967903
+
+The N_IRDA line discipline may access the previous line discipline's closed
+and already-fre private data on open [1].
+
+The tty->disc_data field _never_ refers to valid data on entry to the
+line discipline's open() method. Rather, the ldisc is expected to
+initialize that field for its own use for the lifetime of the instance
+(ie. from open() to close() only).
+
+[1]
+    ==================================================================
+    BUG: KASAN: use-after-free in irtty_open+0x422/0x550 at addr 
ffff8800331dd068
+    Read of size 4 by task a.out/13960
+    
=============================================================================
+    BUG kmalloc-512 (Tainted: G    B          ): kasan: bad access detected
+    
-----------------------------------------------------------------------------
+    ...
+    Call Trace:
+     [<ffffffff815fa2ae>] __asan_report_load4_noabort+0x3e/0x40 
mm/kasan/report.c:279
+     [<ffffffff836938a2>] irtty_open+0x422/0x550 
drivers/net/irda/irtty-sir.c:436
+     [<ffffffff829f1b80>] tty_ldisc_open.isra.2+0x60/0xa0 
drivers/tty/tty_ldisc.c:447
+     [<ffffffff829f21c0>] tty_set_ldisc+0x1a0/0x940 drivers/tty/tty_ldisc.c:567
+     [<     inline     >] tiocsetd drivers/tty/tty_io.c:2650
+     [<ffffffff829da49e>] tty_ioctl+0xace/0x1fd0 drivers/tty/tty_io.c:2883
+     [<     inline     >] vfs_ioctl fs/ioctl.c:43
+     [<ffffffff816708ac>] do_vfs_ioctl+0x57c/0xe60 fs/ioctl.c:607
+     [<     inline     >] SYSC_ioctl fs/ioctl.c:622
+     [<ffffffff81671204>] SyS_ioctl+0x74/0x80 fs/ioctl.c:613
+     [<ffffffff852a7876>] entry_SYSCALL_64_fastpath+0x16/0x7a
+
+Reported-and-tested-by: Dmitry Vyukov <dvyu...@google.com>
+Cc: <sta...@vger.kernel.org>
+Signed-off-by: Peter Hurley <pe...@hurleysoftware.com>
+Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
+Signed-off-by: Jiri Slaby <jsl...@suse.cz>
+---
+ drivers/net/irda/irtty-sir.c | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/drivers/net/irda/irtty-sir.c b/drivers/net/irda/irtty-sir.c
+index 696852eb23c3..7a3f990c1935 100644
+--- a/drivers/net/irda/irtty-sir.c
++++ b/drivers/net/irda/irtty-sir.c
+@@ -430,16 +430,6 @@ static int irtty_open(struct tty_struct *tty)
+ 
+       /* Module stuff handled via irda_ldisc.owner - Jean II */
+ 
+-      /* First make sure we're not already connected. */
+-      if (tty->disc_data != NULL) {
+-              priv = tty->disc_data;
+-              if (priv && priv->magic == IRTTY_MAGIC) {
+-                      ret = -EEXIST;
+-                      goto out;
+-              }
+-              tty->disc_data = NULL;          /* ### */
+-      }
+-
+       /* stop the underlying  driver */
+       irtty_stop_receiver(tty, TRUE);
+       if (tty->ops->stop)
+-- 
+2.7.4
+

++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:59.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:59.000000000 +0200
@@ -220,6 +220,7 @@
        ########################################################
        # Networking, IPv6
        ########################################################
+       patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch
 
        ########################################################
        # NFS
@@ -373,6 +374,12 @@
        ##########################################################
        patches.drivers/ALSA-usb-audio-Fix-NULL-dereference-in-create_fixed
        patches.drivers/ALSA-usb-audio-Add-sanity-checks-for-endpoint-access
+       patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p
+       patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port
+       patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la
+        patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW
+       patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update
+        patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM
 
        ########################################################
        # Char / serial

++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old  2016-03-29 09:54:59.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new  2016-03-29 09:54:59.000000000 +0200
@@ -1,3 +1,3 @@
-2016-03-16 18:30:21 +0100
-GIT Revision: b2c9ae5b1d122fe7e8501364ef1b9943207731e1
+2016-03-24 13:22:16 +0100
+GIT Revision: ece3ff2ef508d3cde89ea615cf42ff7b43a86723
 GIT Branch: stable


Reply via email to