Linux 4.8.1
Greg KH
maintainerI'm announcing the release of the 4.8.1 kernel.
All users of the 4.8 kernel series must upgrade.
The updated 4.8.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.8.y
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 +- arch/arm64/kernel/debug-monitors.c | 6 ++++-- drivers/staging/fbtft/fbtft-core.c | 4 ++-- drivers/usb/class/usbtmc.c | 3 ++- drivers/usb/misc/legousbtower.c | 35 +++++++++++++++++------------------ drivers/usb/serial/cp210x.c | 1 + drivers/usb/usbip/vudc_rx.c | 2 +- include/linux/swap.h | 4 ++-- sound/pci/hda/patch_conexant.c | 10 ++++++++++ sound/pci/hda/patch_realtek.c | 17 +++++++++++++++++ 10 files changed, 57 insertions(+), 27 deletions(-)
Greg Kroah-Hartman (3):
usb: misc: legousbtower: Fix NULL pointer deference Revert "usbtmc: convert to devm_kzalloc" Linux 4.8.1
Hui Wang (2):
ALSA: hda - Adding one more ALC255 pin definition for headset problem
ALSA: hda - Fix headset mic detection problem for several Dell laptops
Ksenija Stanojevic (1):
Staging: fbtft: Fix bug in fbtft-core
Kyle Jones (1):
USB: serial: cp210x: Add ID for a Juniper console
Linus Torvalds (1):
Using BUG_ON() as an assert() is _never_ acceptable
Nicolas Iooss (1):
usb: usbip: vudc: fix left shift overflow
Takashi Iwai (1):
ALSA: hda - Add the top speaker pin config for HP Spectre x360
Will Deacon (1):
arm64: debug: avoid resetting stepping state machine when TIF_SINGLESTEP
Greg KH
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 8 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Psychotic Stoned Sheep
arch/arm64/kernel/debug-monitors.c +4 -2
@@ -435,8 +435,10 @@ NOKPROBE_SYMBOL(kernel_active_single_step);/* ptrace API */ void user_enable_single_step (struct task_struct *task) { -set_ti_thread_flag (task_thread_info (task),TIF_SINGLESTEP ); -set_regs_spsr_ss (task_pt_regs (task)); +struct thread_info *ti =task_thread_info (task); + +if (!test_and_set_ti_thread_flag (ti,TIF_SINGLESTEP )) +set_regs_spsr_ss (task_pt_regs (task)); }NOKPROBE_SYMBOL (user_enable_single_step);
drivers/staging/fbtft/fbtft-core.c +2 -2
@@ -391,11 +391,11 @@ static void fbtft_update_display(struct fbtft_par *par, unsigned start_line,if (unlikely (timeit)) { ts_end =ktime_get (); -if (ktime_to_ns (par->update_time)) +if (!ktime_to_ns (par->update_time)) par->update_time = ts_start; - par->update_time = ts_start; fps =ktime_us_delta (ts_start, par->update_time); + par->update_time = ts_start; fps = fps ?1000000 / fps :0 ; throughput =ktime_us_delta (ts_end, ts_start);
drivers/usb/class/usbtmc.c +2 -1
@@ -141,6 +141,7 @@ static void usbtmc_delete(struct kref *kref)struct usbtmc_device_data *data =to_usbtmc_data (kref);usb_put_dev (data->usb_dev); +kfree (data); }static int usbtmc_open (struct inode *inode,struct file *filp)
@@ -1379,7 +1380,7 @@ static int usbtmc_probe(struct usb_interface *intf,dev_dbg (&intf->dev,"%s called\n" , __func__); - data =devm_kzalloc (&intf->dev,sizeof (*data),GFP_KERNEL ); + data =kmalloc (sizeof (*data),GFP_KERNEL );if (!data)return -ENOMEM ;
drivers/usb/misc/legousbtower.c +17 -18
@@ -898,24 +898,6 @@ static int tower_probe (struct usb_interface *interface, const struct usb_device dev->interrupt_in_interval = interrupt_in_interval ? interrupt_in_interval : dev->interrupt_in_endpoint->bInterval; dev->interrupt_out_interval = interrupt_out_interval ? interrupt_out_interval : dev->interrupt_out_endpoint->bInterval; -/* we can register the device now, as it is ready */ -usb_set_intfdata (interface, dev); - - retval =usb_register_dev (interface, &tower_class); - -if (retval) { -/* something prevented us from registering this driver */ -dev_err (idev,"Not able to get a minor for this device.\n" ); -usb_set_intfdata (interface,NULL ); - goto error; - } - dev->minor = interface->minor; - -/* let the user know what node this device is now attached to */ -dev_info (&interface->dev,"LEGO USB Tower #%d now attached to major " -"%d minor %d\n" , (dev->minor -LEGO_USB_TOWER_MINOR_BASE ), -USB_MAJOR , dev->minor); -/* get the firmware version and log it */ result = usb_control_msg (udev, usb_rcvctrlpipe(udev, 0),
@@ -936,6 +918,23 @@ static int tower_probe (struct usb_interface *interface, const struct usb_device get_version_reply.minor, le16_to_cpu(get_version_reply.build_no)); +/* we can register the device now, as it is ready */ +usb_set_intfdata (interface, dev); + + retval =usb_register_dev (interface, &tower_class); + +if (retval) { +/* something prevented us from registering this driver */ +dev_err (idev,"Not able to get a minor for this device.\n" ); +usb_set_intfdata (interface,NULL ); + goto error; + } + dev->minor = interface->minor; + +/* let the user know what node this device is now attached to */ +dev_info (&interface->dev,"LEGO USB Tower #%d now attached to major " +"%d minor %d\n" , (dev->minor -LEGO_USB_TOWER_MINOR_BASE ), +USB_MAJOR , dev->minor); exit:return retval;
drivers/usb/serial/cp210x.c +1 -0
@@ -118,6 +118,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(0x10C4, 0x8411) }, /* Kyocera GPS Module */ { USB_DEVICE(0x10C4, 0x8418) }, /* IRZ Automation Teleport SG-10 GSM/GPRS Modem */ { USB_DEVICE(0x10C4, 0x846E) }, /* BEI USB Sensor Interface (VCP) */ + { USB_DEVICE(0x10C4, 0x8470) }, /* Juniper Networks BX Series System Console */ { USB_DEVICE(0x10C4, 0x8477) }, /* Balluff RFID */ { USB_DEVICE(0x10C4, 0x84B6) }, /* Starizona Hyperion */ { USB_DEVICE(0x10C4, 0x85EA) }, /* AC-Services IBUS-IF */
drivers/usb/usbip/vudc_rx.c +1 -1
@@ -142,7 +142,7 @@ static int v_recv_cmd_submit(struct vudc *udc, urb_p->urb->status = -EINPROGRESS ;/* FIXME: more pipe setup to please usbip_common */ - urb_p->urb->pipe &= ~(11 <<30 ); + urb_p->urb->pipe &= ~(3 <<30 );switch (urb_p->ep->type) {case USB_ENDPOINT_XFER_BULK : urb_p->urb->pipe |= (PIPE_BULK <<30 );
include/linux/swap.h +2 -2
@@ -257,7 +257,7 @@ static inline void workingset_node_pages_inc(struct radix_tree_node *node)static inline void workingset_node_pages_dec (struct radix_tree_node *node) { -VM_BUG_ON (!workingset_node_pages (node)); +VM_WARN_ON_ONCE (!workingset_node_pages (node)); node->count--; }
@@ -273,7 +273,7 @@ static inline void workingset_node_shadows_inc(struct radix_tree_node *node)static inline void workingset_node_shadows_dec (struct radix_tree_node *node) { -VM_BUG_ON (!workingset_node_shadows (node)); +VM_WARN_ON_ONCE (!workingset_node_shadows (node)); node->count -=1U <<RADIX_TREE_COUNT_SHIFT ; }
sound/pci/hda/patch_conexant.c +10 -0
@@ -261,6 +261,7 @@ enum {CXT_FIXUP_HP_530 ,CXT_FIXUP_CAP_MIX_AMP_5047 ,CXT_FIXUP_MUTE_LED_EAPD , + CXT_FIXUP_HP_SPECTRE, };/* for hda_fixup_thinkpad_acpi() */
@@ -765,6 +766,14 @@ static const struct hda_fixup cxt_fixups[] = { .type = HDA_FIXUP_FUNC, .v.func = cxt_fixup_mute_led_eapd, }, + [CXT_FIXUP_HP_SPECTRE] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl []) { +/* enable NID 0x1d for the speaker on top */ + {0x1d ,0x91170111 }, + { } + } + }, };static const struct snd_pci_quirk cxt5045_fixups[] = {
@@ -814,6 +823,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = {SND_PCI_QUIRK (0x1025 ,0x0543 ,"Acer Aspire One 522" ,CXT_FIXUP_STEREO_DMIC ),SND_PCI_QUIRK (0x1025 ,0x054c ,"Acer Aspire 3830TG" ,CXT_FIXUP_ASPIRE_DMIC ),SND_PCI_QUIRK (0x1025 ,0x054f ,"Acer Aspire 4830T" ,CXT_FIXUP_ASPIRE_DMIC ), +SND_PCI_QUIRK (0x103c ,0x8174 ,"HP Spectre x360" ,CXT_FIXUP_HP_SPECTRE ),SND_PCI_QUIRK (0x1043 ,0x138d ,"Asus" ,CXT_FIXUP_HEADPHONE_MIC_PIN ),SND_PCI_QUIRK (0x152d ,0x0833 ,"OLPC XO-1.5" ,CXT_FIXUP_OLPC_XO ), SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410),
sound/pci/hda/patch_realtek.c +17 -0
@@ -5806,6 +5806,13 @@ static const struct hda_model_fixup alc269_fixup_models[] = { {0x14, 0x90170110}, \ {0x15, 0x0221401f} +#define ALC295_STANDARD_PINS \ + {0x12, 0xb7a60130}, \ + {0x14, 0x90170110}, \ + {0x17, 0x21014020}, \ + {0x18, 0x21a19030}, \ + {0x21, 0x04211020} +#define ALC298_STANDARD_PINS \ {0x12, 0x90a60130}, \ {0x21, 0x03211020}
@@ -5846,6 +5853,10 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { {0x14, 0x90170120}, {0x21, 0x02211030}),SND_HDA_PIN_QUIRK (0x10ec0255 ,0x1028 ,"Dell" ,ALC255_FIXUP_DELL1_MIC_NO_PRESENCE , + {0x14, 0x90170110}, + {0x1b, 0x02011020}, + {0x21, 0x0221101f}), +SND_HDA_PIN_QUIRK (0x10ec0255 ,0x1028 ,"Dell" ,ALC255_FIXUP_DELL1_MIC_NO_PRESENCE , {0x14, 0x90170130}, {0x1b, 0x01014020}, {0x21, 0x0221103f}),
@@ -5911,6 +5922,10 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { {0x14, 0x90170120}, {0x21, 0x02211030}), SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, + {0x12, 0xb7a60130}, + {0x14, 0x90170110}, + {0x21, 0x02211020}), + SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, ALC256_STANDARD_PINS), SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, {0x12, 0x90a60130},
@@ -6021,6 +6036,8 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {SND_HDA_PIN_QUIRK (0x10ec0293 ,0x1028 ,"Dell" ,ALC293_FIXUP_DELL1_MIC_NO_PRESENCE ,ALC292_STANDARD_PINS , {0x13, 0x90a60140}), +SND_HDA_PIN_QUIRK (0x10ec0295 ,0x1028 ,"Dell" ,ALC269_FIXUP_DELL1_MIC_NO_PRESENCE , +ALC295_STANDARD_PINS ),SND_HDA_PIN_QUIRK (0x10ec0298 ,0x1028 ,"Dell" ,ALC298_FIXUP_DELL1_MIC_NO_PRESENCE ,ALC298_STANDARD_PINS , {0x17, 0x90170110}),