Linux 4.19.309
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.309 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.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/firmware/efi/capsule-loader.c | 2 +- drivers/gpio/gpio-74x164.c | 4 ++-- drivers/mmc/core/mmc.c | 2 ++ drivers/net/gtp.c | 12 ++++++------ drivers/net/tun.c | 1 + drivers/net/usb/dm9601.c | 2 +- drivers/net/usb/lan78xx.c | 3 ++- drivers/power/supply/bq27xxx_battery_i2c.c | 4 +++- fs/btrfs/dev-replace.c | 24 ++++++++++++++++++++---- fs/cachefiles/bind.c | 3 +++ net/bluetooth/hci_core.c | 7 ++++--- net/bluetooth/hci_event.c | 9 ++++++++- net/bluetooth/l2cap_core.c | 8 +++++++- net/netlink/af_netlink.c | 2 +- net/wireless/nl80211.c | 2 ++ sound/core/Makefile | 1 - 17 files changed, 64 insertions(+), 24 deletions(-)
Alexander Ofitserov (1):
gtp: fix use-after-free and null-ptr-deref in gtp_newlink()
Arnd Bergmann (1):
efi/capsule-loader: fix incorrect allocation size
Arturas Moskvinas (1):
gpio: 74x164: Enable output pins after registers are reset
Baokun Li (1):
cachefiles: fix memory leak in cachefiles_add_cache()
David Sterba (1):
btrfs: dev-replace: properly validate device names
Greg Kroah-Hartman (1):
Linux 4.19.309
Hans de Goede (1):
power: supply: bq27xxx-i2c: Do not free non existing IRQ
Ivan Semenov (1):
mmc: core: Fix eMMC initialization with 1-bit bus connection
Javier Carrasco (1):
net: usb: dm9601: fix wrong return value in dm9601_mdio_read
Johannes Berg (1):
wifi: nl80211: reject iftype change with mesh ID change
Kai-Heng Feng (1):
Bluetooth: Enforce validation on max value of connection interval
Luiz Augusto von Dentz (1):
Bluetooth: hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST
Oleksij Rempel (1):
lan78xx: enable auto speed configuration for LAN7850 if no EEPROM is detected
Ryosuke Yasuoka (1):
netlink: Fix kernel-infoleak-after-free in __skb_datagram_iter
Takashi Iwai (1):
ALSA: Drop leftover snd-rtctimer stuff from Makefile
Ying Hsu (1):
Bluetooth: Avoid potential use-after-free in hci_error_reset
Yunjian Wang (1):
tun: Fix xdp_rxq_info's queue_index when detaching
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 308 +SUBLEVEL = 309 EXTRAVERSION = NAME = "People's Front"
drivers/firmware/efi/capsule-loader.c +1 -1
@@ -293,7 +293,7 @@ static int efi_capsule_open(struct inode *inode, struct file *file)return -ENOMEM ; } - cap_info->phys =kzalloc (sizeof (void *),GFP_KERNEL ); + cap_info->phys =kzalloc (sizeof (phys_addr_t),GFP_KERNEL );if (!cap_info->phys) {kfree (cap_info->pages);kfree (cap_info);
drivers/gpio/gpio-74x164.c +2 -2
@@ -132,8 +132,6 @@ static int gen_74x164_probe(struct spi_device *spi)if (IS_ERR (chip->gpiod_oe))return PTR_ERR (chip->gpiod_oe); -gpiod_set_value_cansleep (chip->gpiod_oe,1 ); -spi_set_drvdata (spi, chip); chip->gpio_chip.label = spi->modalias;
@@ -158,6 +156,8 @@ static int gen_74x164_probe(struct spi_device *spi) goto exit_destroy; } +gpiod_set_value_cansleep (chip->gpiod_oe,1 ); + ret =gpiochip_add_data (&chip->gpio_chip, chip);if (!ret)return 0 ;
drivers/mmc/core/mmc.c +2 -0
@@ -994,10 +994,12 @@ static int mmc_select_bus_width(struct mmc_card *card)static unsigned ext_csd_bits[] = {EXT_CSD_BUS_WIDTH_8 ,EXT_CSD_BUS_WIDTH_4 , +EXT_CSD_BUS_WIDTH_1 , };static unsigned bus_widths[] = {MMC_BUS_WIDTH_8 ,MMC_BUS_WIDTH_4 , +MMC_BUS_WIDTH_1 , };struct mmc_host *host = card->host;unsigned idx, bus_width =0 ;
drivers/net/gtp.c +6 -6
@@ -1381,26 +1381,26 @@ static int __init gtp_init(void)get_random_bytes (>p_h_initval,sizeof (gtp_h_initval)); - err =rtnl_link_register (>p_link_ops); + err =register_pernet_subsys (>p_net_ops);if (err <0 ) goto error_out; - err =register_pernet_subsys (>p_net_ops); + err =rtnl_link_register (>p_link_ops);if (err <0 ) - goto unreg_rtnl_link; + goto unreg_pernet_subsys; err =genl_register_family (>p_genl_family);if (err <0 ) - goto unreg_pernet_subsys; + goto unreg_rtnl_link;pr_info ("GTP module loaded (pdp ctx size %zd bytes)\n" ,sizeof (struct pdp_ctx ));return 0 ; -unreg_pernet_subsys: -unregister_pernet_subsys (>p_net_ops); unreg_rtnl_link:rtnl_link_unregister (>p_link_ops); +unreg_pernet_subsys: +unregister_pernet_subsys (>p_net_ops); error_out:pr_err ("error loading GTP module loaded\n" );return err;
drivers/net/tun.c +1 -0
@@ -729,6 +729,7 @@ static void __tun_detach(struct tun_file *tfile, bool clean) tun->tfiles[tun->numqueues - 1]); ntfile =rtnl_dereference (tun->tfiles[index]); ntfile->queue_index = index; + ntfile->xdp_rxq.queue_index = index;rcu_assign_pointer (tun->tfiles[tun->numqueues -1 ],NULL );
drivers/net/usb/dm9601.c +1 -1
@@ -231,7 +231,7 @@ static int dm9601_mdio_read(struct net_device *netdev, int phy_id, int loc) err =dm_read_shared_word (dev,1 , loc, &res);if (err <0 ) {netdev_err (dev->net,"MDIO read error: %d\n" , err); -return err; +return 0 ; } netdev_dbg(dev->net,
drivers/net/usb/lan78xx.c +2 -1
@@ -2581,7 +2581,8 @@ static int lan78xx_reset(struct lan78xx_net *dev)if (dev->chipid ==ID_REV_CHIP_ID_7801_ ) buf &= ~MAC_CR_GMII_EN_ ; -if (dev->chipid ==ID_REV_CHIP_ID_7800_ ) { +if (dev->chipid ==ID_REV_CHIP_ID_7800_ || + dev->chipid ==ID_REV_CHIP_ID_7850_ ) { ret =lan78xx_read_raw_eeprom (dev,0 ,1 , &sig);if (!ret && sig !=EEPROM_INDICATOR ) {/* Implies there is no external eeprom. Set mac speed */
drivers/power/supply/bq27xxx_battery_i2c.c +3 -1
@@ -217,7 +217,9 @@ static int bq27xxx_battery_i2c_remove(struct i2c_client *client) {struct bq27xxx_device_info *di =i2c_get_clientdata (client); -free_irq (client->irq, di); +if (client->irq) +free_irq (client->irq, di); +bq27xxx_battery_teardown (di);mutex_lock (&battery_mutex);
fs/btrfs/dev-replace.c +20 -4
@@ -535,6 +535,23 @@ int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,return ret; } +static int btrfs_check_replace_dev_names (struct btrfs_ioctl_dev_replace_args *args) +{ +if (args->start.srcdevid ==0 ) { +if (memchr (args->start.srcdev_name,0 , +sizeof (args->start.srcdev_name)) ==NULL ) +return -ENAMETOOLONG ; + }else { + args->start.srcdev_name[0 ] =0 ; + } + +if (memchr (args->start.tgtdev_name,0 , +sizeof (args->start.tgtdev_name)) ==NULL ) +return -ENAMETOOLONG ; + +return 0 ; +} +int btrfs_dev_replace_by_ioctl (struct btrfs_fs_info *fs_info,struct btrfs_ioctl_dev_replace_args *args) {
@@ -547,10 +564,9 @@ int btrfs_dev_replace_by_ioctl(struct btrfs_fs_info *fs_info,default :return -EINVAL ; } - -if ((args->start.srcdevid ==0 && args->start.srcdev_name[0 ] =='\0' ) || - args->start.tgtdev_name[0 ] =='\0' ) -return -EINVAL ; + ret =btrfs_check_replace_dev_names (args); +if (ret <0 ) +return ret; ret = btrfs_dev_replace_start(fs_info, args->start.tgtdev_name, args->start.srcdevid,
fs/cachefiles/bind.c +3 -0
@@ -249,6 +249,8 @@ static int cachefiles_daemon_add_cache(struct cachefiles_cache *cache)kmem_cache_free (cachefiles_object_jar, fsdef); error_root_object:cachefiles_end_secure (cache, saved_cred); +put_cred (cache->cache_cred); + cache->cache_cred =NULL ;pr_err ("Failed to register: %d\n" , ret);return ret; }
@@ -269,6 +271,7 @@ void cachefiles_daemon_unbind(struct cachefiles_cache *cache)dput (cache->graveyard);mntput (cache->mnt); +put_cred (cache->cache_cred);kfree (cache->rootdirname);kfree (cache->secctx);
net/bluetooth/hci_core.c +4 -3
@@ -2217,6 +2217,7 @@ static void hci_error_reset(struct work_struct *work) { struct hci_dev *hdev = container_of(work, struct hci_dev, error_reset); +hci_dev_hold (hdev);BT_DBG ("%s" , hdev->name);if (hdev->hw_error)
@@ -2224,10 +2225,10 @@ static void hci_error_reset(struct work_struct *work)else bt_dev_err (hdev,"hardware error 0x%2.2x" , hdev->hw_error_code); -if (hci_dev_do_close (hdev)) -return ; +if (!hci_dev_do_close (hdev)) +hci_dev_do_open (hdev); -hci_dev_do_open (hdev); +hci_dev_put (hdev); }void hci_uuids_clear (struct hci_dev *hdev)
net/bluetooth/hci_event.c +8 -1
@@ -4337,9 +4337,12 @@ static void hci_io_capa_request_evt(struct hci_dev *hdev, struct sk_buff *skb)hci_dev_lock (hdev); conn =hci_conn_hash_lookup_ba (hdev,ACL_LINK , &ev->bdaddr); -if (!conn || !hci_conn_ssp_enabled (conn)) +if (!conn || !hci_dev_test_flag (hdev,HCI_SSP_ENABLED )) goto unlock; +/* Assume remote supports SSP since it has triggered this event */ +set_bit (HCI_CONN_SSP_ENABLED , &conn->flags); +hci_conn_hold (conn);if (!hci_dev_test_flag (hdev,HCI_MGMT ))
@@ -5638,6 +5641,10 @@ static void hci_le_remote_conn_param_req_evt(struct hci_dev *hdev,return send_conn_param_neg_reply (hdev, handle,HCI_ERROR_UNKNOWN_CONN_ID ); +if (max > hcon->le_conn_max_interval) +return send_conn_param_neg_reply (hdev, handle, +HCI_ERROR_INVALID_LL_PARAMS ); +if (hci_check_conn_params (min, max, latency, timeout))return send_conn_param_neg_reply (hdev, handle,HCI_ERROR_INVALID_LL_PARAMS );
net/bluetooth/l2cap_core.c +7 -1
@@ -5313,7 +5313,13 @@ static inline int l2cap_conn_param_update_req(struct l2cap_conn *conn,memset (&rsp,0 ,sizeof (rsp)); - err =hci_check_conn_params (min, max, latency, to_multiplier); +if (max > hcon->le_conn_max_interval) { +BT_DBG ("requested connection interval exceeds current bounds." ); + err = -EINVAL ; + }else { + err =hci_check_conn_params (min, max, latency, to_multiplier); + } +if (err) rsp.result =cpu_to_le16 (L2CAP_CONN_PARAM_REJECTED );else
net/netlink/af_netlink.c +1 -1
@@ -160,7 +160,7 @@ static inline u32 netlink_group_mask(u32 group)static struct sk_buff *netlink_to_full_skb (const struct sk_buff *skb,gfp_t gfp_mask) { -unsigned int len =skb_end_offset (skb); +unsigned int len = skb->len;struct sk_buff *new; new =alloc_skb (len, gfp_mask);
net/wireless/nl80211.c +2 -0
@@ -3174,6 +3174,8 @@ static int nl80211_set_interface(struct sk_buff *skb, struct genl_info *info)if (ntype !=NL80211_IFTYPE_MESH_POINT )return -EINVAL ; +if (otype !=NL80211_IFTYPE_MESH_POINT ) +return -EINVAL ;if (netif_running (dev))return -EBUSY ;
sound/core/Makefile +0 -1
@@ -32,7 +32,6 @@ snd-pcm-dmaengine-objs := pcm_dmaengine.o snd-rawmidi-objs := rawmidi.o snd-timer-objs := timer.o snd-hrtimer-objs := hrtimer.o -snd-rtctimer-objs := rtctimer.o snd-hwdep-objs := hwdep.o snd-seq-device-objs := seq_device.o