Linux 5.4.271
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.271 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.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 arch/x86/kernel/cpu/intel.c | 178 ++++++++++++++--------------- drivers/dma/fsl-qdma.c | 21 +-- 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/afs/dir.c | 4 fs/btrfs/dev-replace.c | 24 +++ fs/cachefiles/bind.c | 3 fs/hugetlbfs/inode.c | 6 net/bluetooth/hci_core.c | 7 - net/bluetooth/hci_event.c | 9 + net/bluetooth/l2cap_core.c | 8 + net/core/rtnetlink.c | 11 - net/ipv4/ip_tunnel.c | 28 +++- net/ipv6/addrconf.c | 7 - net/netfilter/nft_compat.c | 20 +++ net/netlink/af_netlink.c | 2 net/wireless/nl80211.c | 2 sound/core/Makefile | 1 25 files changed, 223 insertions(+), 140 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()
Curtis Klein (1):
dmaengine: fsl-qdma: init irq after reg initialization
David Howells (1):
afs: Fix endless loop in directory parsing
David Sterba (1):
btrfs: dev-replace: properly validate device names
Eric Dumazet (1):
ipv6: fix potential "struct net" leak in inet6_rtm_getaddr()
Florian Westphal (1):
net: ip_tunnel: prevent perpetual headroom growth
Greg Kroah-Hartman (1):
Linux 5.4.271
Hans de Goede (1):
power: supply: bq27xxx-i2c: Do not free non existing IRQ
Ignat Korchagin (1):
netfilter: nf_tables: allow NFPROTO_INET in nft_(match/target)_validate()
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
Lin Ma (1):
rtnetlink: fix error logic of IFLA_BRIDGE_FLAGS writing back
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
Oscar Salvador (1):
fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super
Paolo Bonzini (1):
x86/cpu/intel: Detect TME keyid bits before setting MTRR mask registers
Peng Ma (1):
dmaengine: fsl-qdma: fix SoC may hang on 16 byte unaligned read
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 = 5 PATCHLEVEL = 4 -SUBLEVEL = 270 +SUBLEVEL = 271 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/x86/kernel/cpu/intel.c +91 -87
202 lines not on this page · raw message
drivers/dma/fsl-qdma.c +11 -10
@@ -109,6 +109,7 @@#define FSL_QDMA_CMD_WTHROTL_OFFSET 20#define FSL_QDMA_CMD_DSEN_OFFSET 19#define FSL_QDMA_CMD_LWC_OFFSET 16 +#define FSL_QDMA_CMD_PF BIT(17)/* Field definition for Descriptor offset */ #define QDMA_CCDF_STATUS 20
@@ -372,7 +373,8 @@ static void fsl_qdma_comp_fill_memcpy(struct fsl_qdma_comp *fsl_comp,qdma_csgf_set_f (csgf_dest, len);/* Descriptor Buffer */ cmd =cpu_to_le32 (FSL_QDMA_CMD_RWTTYPE << -FSL_QDMA_CMD_RWTTYPE_OFFSET ); +FSL_QDMA_CMD_RWTTYPE_OFFSET ) | +FSL_QDMA_CMD_PF ; sdf->data =QDMA_SDDF_CMD (cmd); cmd = cpu_to_le32(FSL_QDMA_CMD_RWTTYPE <<
@@ -1150,10 +1152,6 @@ static int fsl_qdma_probe(struct platform_device *pdev)if (!fsl_qdma->queue)return -ENOMEM ; - ret =fsl_qdma_irq_init (pdev, fsl_qdma); -if (ret) -return ret; - fsl_qdma->irq_base =platform_get_irq_byname (pdev,"qdma-queue0" );if (fsl_qdma->irq_base <0 )return fsl_qdma->irq_base;
@@ -1192,16 +1190,19 @@ static int fsl_qdma_probe(struct platform_device *pdev)platform_set_drvdata (pdev, fsl_qdma); - ret =dma_async_device_register (&fsl_qdma->dma_dev); + ret =fsl_qdma_reg_init (fsl_qdma);if (ret) { -dev_err (&pdev->dev, -"Can't register NXP Layerscape qDMA engine.\n" ); +dev_err (&pdev->dev,"Can't Initialize the qDMA engine.\n" );return ret; } - ret =fsl_qdma_reg_init (fsl_qdma); + ret =fsl_qdma_irq_init (pdev, fsl_qdma); +if (ret) +return ret; + + ret =dma_async_device_register (&fsl_qdma->dma_dev);if (ret) { -dev_err (&pdev->dev,"Can't Initialize the qDMA engine.\n" ); +dev_err (&pdev->dev,"Can't register NXP Layerscape qDMA engine.\n" );return ret; }
drivers/firmware/efi/capsule-loader.c +1 -1
@@ -291,7 +291,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
@@ -128,8 +128,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;
@@ -154,6 +152,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
@@ -991,10 +991,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
@@ -1377,26 +1377,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
@@ -715,6 +715,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
@@ -2535,7 +2535,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/afs/dir.c +3 -1
@@ -426,8 +426,10 @@ static int afs_dir_iterate_block(struct afs_vnode *dvnode, dire->u.name[0 ] =='.' && ctx->actor != afs_lookup_filldir && ctx->actor != afs_lookup_one_filldir && - memcmp(dire->u.name, ".__afs", 6) == 0) + memcmp(dire->u.name, ".__afs", 6) == 0) { + ctx->pos = blkoff + next * sizeof(union afs_xdr_dirent);continue ; + }/* found the next entry */ if (!dir_emit(ctx, dire->u.name, nlen,
fs/btrfs/dev-replace.c +20 -4
@@ -535,6 +535,23 @@ static 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
@@ -245,6 +245,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; }
@@ -265,6 +267,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);
fs/hugetlbfs/inode.c +4 -2
@@ -1205,6 +1205,7 @@ static int hugetlbfs_parse_param(struct fs_context *fc, struct fs_parameter *par {struct hugetlbfs_fs_context *ctx = fc->fs_private;struct fs_parse_result result; +struct hstate *h;char *rest;unsigned long ps;int opt;
@@ -1249,11 +1250,12 @@ static int hugetlbfs_parse_param(struct fs_context *fc, struct fs_parameter *parcase Opt_pagesize: ps =memparse (param->string, &rest); - ctx->hstate =size_to_hstate (ps); -if (!ctx->hstate) { + h =size_to_hstate (ps); +if (!h) {pr_err ("Unsupported page size %lu MB\n" , ps >>20 );return -EINVAL ; } + ctx->hstate = h;return 0 ;case Opt_min_size:
net/bluetooth/hci_core.c +4 -3
@@ -2272,6 +2272,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)
@@ -2279,10 +2280,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
@@ -4469,9 +4469,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 ))
@@ -5766,6 +5769,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
@@ -5331,7 +5331,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/core/rtnetlink.c +5 -6
@@ -4586,10 +4586,9 @@ static int rtnl_bridge_setlink(struct sk_buff *skb, struct nlmsghdr *nlh,struct net *net =sock_net (skb->sk);struct ifinfomsg *ifm;struct net_device *dev; -struct nlattr *br_spec, *attr =NULL ; +struct nlattr *br_spec, *attr, *br_flags_attr =NULL ;int rem, err = -EOPNOTSUPP ;u16 flags =0 ; -bool have_flags = false;if (nlmsg_len (nlh) <sizeof (*ifm))return -EINVAL ;
@@ -4607,11 +4606,11 @@ static int rtnl_bridge_setlink(struct sk_buff *skb, struct nlmsghdr *nlh, br_spec =nlmsg_find_attr (nlh,sizeof (struct ifinfomsg ),IFLA_AF_SPEC );if (br_spec) {nla_for_each_nested (attr, br_spec, rem) { -if (nla_type (attr) ==IFLA_BRIDGE_FLAGS && !have_flags) { +if (nla_type (attr) ==IFLA_BRIDGE_FLAGS && !br_flags_attr) {if (nla_len (attr) <sizeof (flags))return -EINVAL ; - have_flags = true; + br_flags_attr = attr; flags =nla_get_u16 (attr); }
@@ -4655,8 +4654,8 @@ static int rtnl_bridge_setlink(struct sk_buff *skb, struct nlmsghdr *nlh, } } -if (have_flags) -memcpy (nla_data (attr), &flags,sizeof (flags)); +if (br_flags_attr) +memcpy (nla_data (br_flags_attr), &flags,sizeof (flags)); out:return err; }
net/ipv4/ip_tunnel.c +21 -7
@@ -547,6 +547,20 @@ static int tnl_update_pmtu(struct net_device *dev, struct sk_buff *skb,return 0 ; } +static void ip_tunnel_adj_headroom (struct net_device *dev,unsigned int headroom) +{ +/* we must cap headroom to some upperlimit, else pskb_expand_head +* will overflow header offsets in skb_headers_offset_update(). +*/ +static const unsigned int max_allowed =512 ; + +if (headroom > max_allowed) + headroom = max_allowed; + +if (headroom >READ_ONCE (dev->needed_headroom)) +WRITE_ONCE (dev->needed_headroom, headroom); +} +void ip_md_tunnel_xmit (struct sk_buff *skb,struct net_device *dev,u8 proto,int tunnel_hlen) {
@@ -620,13 +634,13 @@ void ip_md_tunnel_xmit(struct sk_buff *skb, struct net_device *dev, } headroom +=LL_RESERVED_SPACE (rt->dst.dev) + rt->dst.header_len; -if (headroom >READ_ONCE (dev->needed_headroom)) -WRITE_ONCE (dev->needed_headroom, headroom); - -if (skb_cow_head (skb,READ_ONCE (dev->needed_headroom))) { +if (skb_cow_head (skb, headroom)) {ip_rt_put (rt); goto tx_dropped; } + +ip_tunnel_adj_headroom (dev, headroom); +iptunnel_xmit (NULL , rt, skb, fl4.saddr, fl4.daddr, proto, tos, ttl, df, !net_eq (tunnel->net,dev_net (dev)));return ;
@@ -804,16 +818,16 @@ void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev, max_headroom =LL_RESERVED_SPACE (rt->dst.dev) +sizeof (struct iphdr ) + rt->dst.header_len +ip_encap_hlen (&tunnel->encap); -if (max_headroom >READ_ONCE (dev->needed_headroom)) -WRITE_ONCE (dev->needed_headroom, max_headroom); -if (skb_cow_head (skb,READ_ONCE (dev->needed_headroom))) { +if (skb_cow_head (skb, max_headroom)) {ip_rt_put (rt); dev->stats.tx_dropped++;kfree_skb (skb);return ; } +ip_tunnel_adj_headroom (dev, max_headroom); +iptunnel_xmit (NULL , rt, skb, fl4.saddr, fl4.daddr, protocol, tos, ttl, df, !net_eq (tunnel->net,dev_net (dev)));return ;
net/ipv6/addrconf.c +4 -3
@@ -5380,9 +5380,10 @@ static int inet6_rtm_getaddr(struct sk_buff *in_skb, struct nlmsghdr *nlh, } addr =extract_addr (tb[IFA_ADDRESS ], tb[IFA_LOCAL ], &peer); -if (!addr) -return -EINVAL ; - +if (!addr) { + err = -EINVAL ; + goto errout; + } ifm =nlmsg_data (nlh);if (ifm->ifa_index) dev =dev_get_by_index (tgt_net, ifm->ifa_index);
net/netfilter/nft_compat.c +20 -0
@@ -336,10 +336,20 @@ static int nft_target_validate(const struct nft_ctx *ctx,if (ctx->family !=NFPROTO_IPV4 && ctx->family !=NFPROTO_IPV6 && + ctx->family !=NFPROTO_INET && ctx->family !=NFPROTO_BRIDGE && ctx->family !=NFPROTO_ARP )return -EOPNOTSUPP ; + ret =nft_chain_validate_hooks (ctx->chain, + (1 <<NF_INET_PRE_ROUTING ) | + (1 <<NF_INET_LOCAL_IN ) | + (1 <<NF_INET_FORWARD ) | + (1 <<NF_INET_LOCAL_OUT ) | + (1 <<NF_INET_POST_ROUTING )); +if (ret) +return ret; +if (nft_is_base_chain (ctx->chain)) {const struct nft_base_chain *basechain =nft_base_chain (ctx->chain);
@@ -584,10 +594,20 @@ static int nft_match_validate(const struct nft_ctx *ctx,if (ctx->family !=NFPROTO_IPV4 && ctx->family !=NFPROTO_IPV6 && + ctx->family !=NFPROTO_INET && ctx->family !=NFPROTO_BRIDGE && ctx->family !=NFPROTO_ARP )return -EOPNOTSUPP ; + ret =nft_chain_validate_hooks (ctx->chain, + (1 <<NF_INET_PRE_ROUTING ) | + (1 <<NF_INET_LOCAL_IN ) | + (1 <<NF_INET_FORWARD ) | + (1 <<NF_INET_LOCAL_OUT ) | + (1 <<NF_INET_POST_ROUTING )); +if (ret) +return ret; +if (nft_is_base_chain (ctx->chain)) {const struct nft_base_chain *basechain =nft_base_chain (ctx->chain);
net/netlink/af_netlink.c +1 -1
@@ -156,7 +156,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
@@ -3527,6 +3527,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