Linux 4.4.279
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.4.279 kernel.
All users of the 4.4 kernel series must upgrade.
The updated 4.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 +- drivers/net/usb/r8152.c | 3 ++- fs/btrfs/compression.c | 2 +- include/linux/mfd/rt5033-private.h | 4 ++-- net/bluetooth/hci_core.c | 16 ++++++++-------- net/can/raw.c | 20 ++++++++++++++++++-- net/core/skbuff.c | 5 ++++- 7 files changed, 36 insertions(+), 16 deletions(-)
Axel Lin (1):
regulator: rt5033: Fix n_voltages settings for BUCK and LDO
Goldwyn Rodrigues (1):
btrfs: mark compressed range uptodate only if all bio succeed
Greg Kroah-Hartman (2):
Revert "Bluetooth: Shutdown controller after workqueues are flushed or cancelled" Linux 4.4.279
Pravin B Shelar (1):
net: Fix zero-copy head len calculation.
Takashi Iwai (1):
r8152: Fix potential PM refcount imbalance
Ziyang Xuan (1):
can: raw: raw_setsockopt(): fix raw_rcv panic for sock UAF
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 278 +SUBLEVEL = 279 EXTRAVERSION = NAME = Blurry Fish Butt
drivers/net/usb/r8152.c +2 -1
@@ -3159,9 +3159,10 @@ static int rtl8152_close(struct net_device *netdev) tp->rtl_ops.down (tp);mutex_unlock (&tp->control); + } +if (!res)usb_autopm_put_interface (tp->intf); - }free_all_mem (tp);
fs/btrfs/compression.c +1 -1
@@ -290,7 +290,7 @@ static void end_compressed_bio_write(struct bio *bio) cb->start, cb->start + cb->len -1 ,NULL , - bio->bi_error ? 0 : 1); + !cb->errors); cb->compressed_pages[0 ]->mapping =NULL ;end_compressed_writeback (inode, cb);
include/linux/mfd/rt5033-private.h +2 -2
@@ -203,13 +203,13 @@ enum rt5033_reg {#define RT5033_REGULATOR_BUCK_VOLTAGE_MIN 1000000U#define RT5033_REGULATOR_BUCK_VOLTAGE_MAX 3000000U#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP 100000U -#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 32 +#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 21/* RT5033 regulator LDO output voltage uV */ #define RT5033_REGULATOR_LDO_VOLTAGE_MIN 1200000U#define RT5033_REGULATOR_LDO_VOLTAGE_MAX 3000000U#define RT5033_REGULATOR_LDO_VOLTAGE_STEP 100000U -#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 32 +#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 19/* RT5033 regulator SAFE LDO output voltage uV */ #define RT5033_REGULATOR_SAFE_LDO_VOLTAGE 4900000U
net/bluetooth/hci_core.c +8 -8
@@ -1666,6 +1666,14 @@ int hci_dev_do_close(struct hci_dev *hdev)BT_DBG ("%s %p" , hdev->name, hdev); +if (!hci_dev_test_flag (hdev,HCI_UNREGISTER ) && + !hci_dev_test_flag (hdev,HCI_USER_CHANNEL ) && +test_bit (HCI_UP , &hdev->flags)) { +/* Execute vendor specific shutdown routine */ +if (hdev->shutdown) + hdev->shutdown (hdev); + } +cancel_delayed_work (&hdev->power_off);hci_req_cancel (hdev,ENODEV );
@@ -1738,14 +1746,6 @@ int hci_dev_do_close(struct hci_dev *hdev)clear_bit (HCI_INIT , &hdev->flags); } -if (!hci_dev_test_flag (hdev,HCI_UNREGISTER ) && - !hci_dev_test_flag (hdev,HCI_USER_CHANNEL ) && -test_bit (HCI_UP , &hdev->flags)) { -/* Execute vendor specific shutdown routine */ -if (hdev->shutdown) - hdev->shutdown (hdev); - } -/* flush cmd work */ flush_work (&hdev->cmd_work);
net/can/raw.c +18 -2
@@ -541,10 +541,18 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,return -EFAULT ; } +rtnl_lock ();lock_sock (sk); -if (ro->bound && ro->ifindex) +if (ro->bound && ro->ifindex) { dev =dev_get_by_index (&init_net, ro->ifindex); +if (!dev) { +if (count >1 ) +kfree (filter); + err = -ENODEV ; + goto out_fil; + } + }if (ro->bound) {/* (try to) register the new filters */
@@ -581,6 +589,7 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,dev_put (dev);release_sock (sk); +rtnl_unlock ();break ;
@@ -593,10 +602,16 @@ static int raw_setsockopt(struct socket *sock, int level, int optname, err_mask &=CAN_ERR_MASK ; +rtnl_lock ();lock_sock (sk); -if (ro->bound && ro->ifindex) +if (ro->bound && ro->ifindex) { dev =dev_get_by_index (&init_net, ro->ifindex); +if (!dev) { + err = -ENODEV ; + goto out_err; + } + }/* remove current error mask */ if (ro->bound) {
@@ -618,6 +633,7 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,dev_put (dev);release_sock (sk); +rtnl_unlock ();break ;
net/core/skbuff.c +4 -1
@@ -2243,8 +2243,11 @@ skb_zerocopy_headlen(const struct sk_buff *from)if (!from->head_frag ||skb_headlen (from) <L1_CACHE_BYTES || -skb_shinfo (from)->nr_frags >=MAX_SKB_FRAGS ) +skb_shinfo (from)->nr_frags >=MAX_SKB_FRAGS ) { hlen =skb_headlen (from); +if (!hlen) + hlen = from->len; + }if (skb_has_frag_list (from)) hlen = from->len;