This is the 4.19.145 stable release
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl9ctJoACgkQONu9yGCS aT408xAAgPLoJt28UWiyWqcMQyQgvZQVJ8Y5nD66pZ53PtcY2V7MMLbeXFY8I8Xy U0p5HnGEHeYUHsXcZo7nNlkg+aBFZw9kBWne9OExPWw4NTjGmUXs2AusRSFkEY22 sLYPXwnStOZzyuakAPRJ2Q3EEz2+tdhZiTMOeAT1BKqcLfNBebsZjNgc7i4ogFty UaGYnrhDzYcj0jf1uzPNeANXqK2czvbB1d/KLdUKINvaCaSpw65xfjhfjciAlRTH 3uGINBAOw5npYMBK3nNW6hgNNeyKvVVRbZf239x7d6xzQnVNfEgAdQ1Cg2lbTgDB M9I8uO5jRM8i3mKNdjffuBnfagCJwlVs56G6Unp8dt8f8vOncVZ+B7hTPLaCUPN/ LVbF4QYGWXBE7V8VVtPMoKz1V5FgTTeshQsRmu6EXihxQK2HgPnV2HUyfkt132kI arWkeW3Qsl2TmGBk0nCXbikWAp2E6ToiC2dX0MWsyA2US6DqaZvIyaqmI6E9QCPM o+PJwzePcUD7CUnOqxWN6OHulQ9FNBRs0BUdxwcNIU4YO8ne6lx2rh95MtQk4Bvf qEFYZFHZDLtJojsY5bOQ9z+ChowKyMDcZVY+/X+C1PEDq7cjlwdLfJWoF5PIltb9 /OjQH3Ox9yBw1ECA4F4ObcnTEs8bd8/VnfMayLpMhVrlh5kLAAY= =hMRJ -----END PGP SIGNATURE----- Merge 4.19.145 into android-4.19-stable Changes in 4.19.145 ALSA; firewire-tascam: exclude Tascam FE-8 from detection block: ensure bdi->io_pages is always initialized netlabel: fix problems with mapping removal net: usb: dm9601: Add USB ID of Keenetic Plus DSL sctp: not disable bh in the whole sctp_get_port_local() tipc: fix shutdown() of connectionless socket net: disable netpoll on fresh napis net/mlx5e: Don't support phys switch id if not in switchdev mode Linux 4.19.145 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I84b193f4c87a87efbba84219856368d3cfba907b
This commit is contained in:
commit
af4136af6b
10 changed files with 85 additions and 50 deletions
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 19
|
||||
SUBLEVEL = 144
|
||||
SUBLEVEL = 145
|
||||
EXTRAVERSION =
|
||||
NAME = "People's Front"
|
||||
|
||||
|
|
|
@ -1038,6 +1038,8 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id,
|
|||
|
||||
q->backing_dev_info->ra_pages =
|
||||
(VM_MAX_READAHEAD * 1024) / PAGE_SIZE;
|
||||
q->backing_dev_info->io_pages =
|
||||
(VM_MAX_READAHEAD * 1024) / PAGE_SIZE;
|
||||
q->backing_dev_info->capabilities = BDI_CAP_CGROUP_WRITEBACK;
|
||||
q->backing_dev_info->name = "block";
|
||||
q->node = node_id;
|
||||
|
|
|
@ -198,7 +198,7 @@ int mlx5e_attr_get(struct net_device *dev, struct switchdev_attr *attr)
|
|||
struct mlx5_eswitch_rep *rep = rpriv->rep;
|
||||
struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
|
||||
|
||||
if (esw->mode == SRIOV_NONE)
|
||||
if (esw->mode != SRIOV_OFFLOADS)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
switch (attr->id) {
|
||||
|
|
|
@ -625,6 +625,10 @@ static const struct usb_device_id products[] = {
|
|||
USB_DEVICE(0x0a46, 0x1269), /* DM9621A USB to Fast Ethernet Adapter */
|
||||
.driver_info = (unsigned long)&dm9601_info,
|
||||
},
|
||||
{
|
||||
USB_DEVICE(0x0586, 0x3427), /* ZyXEL Keenetic Plus DSL xDSL modem */
|
||||
.driver_info = (unsigned long)&dm9601_info,
|
||||
},
|
||||
{}, // END
|
||||
};
|
||||
|
||||
|
|
|
@ -6202,12 +6202,13 @@ void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
|
|||
pr_err_once("netif_napi_add() called with weight %d on device %s\n",
|
||||
weight, dev->name);
|
||||
napi->weight = weight;
|
||||
list_add(&napi->dev_list, &dev->napi_list);
|
||||
napi->dev = dev;
|
||||
#ifdef CONFIG_NETPOLL
|
||||
napi->poll_owner = -1;
|
||||
#endif
|
||||
set_bit(NAPI_STATE_SCHED, &napi->state);
|
||||
set_bit(NAPI_STATE_NPSVC, &napi->state);
|
||||
list_add_rcu(&napi->dev_list, &dev->napi_list);
|
||||
napi_hash_add(napi);
|
||||
}
|
||||
EXPORT_SYMBOL(netif_napi_add);
|
||||
|
|
|
@ -161,7 +161,7 @@ static void poll_napi(struct net_device *dev)
|
|||
struct napi_struct *napi;
|
||||
int cpu = smp_processor_id();
|
||||
|
||||
list_for_each_entry(napi, &dev->napi_list, dev_list) {
|
||||
list_for_each_entry_rcu(napi, &dev->napi_list, dev_list) {
|
||||
if (cmpxchg(&napi->poll_owner, -1, cpu) == -1) {
|
||||
poll_one_napi(napi);
|
||||
smp_store_release(&napi->poll_owner, -1);
|
||||
|
|
|
@ -99,6 +99,7 @@ static void netlbl_domhsh_free_entry(struct rcu_head *entry)
|
|||
kfree(netlbl_domhsh_addr6_entry(iter6));
|
||||
}
|
||||
#endif /* IPv6 */
|
||||
kfree(ptr->def.addrsel);
|
||||
}
|
||||
kfree(ptr->domain);
|
||||
kfree(ptr);
|
||||
|
@ -550,6 +551,8 @@ int netlbl_domhsh_add(struct netlbl_dom_map *entry,
|
|||
goto add_return;
|
||||
}
|
||||
#endif /* IPv6 */
|
||||
/* cleanup the new entry since we've moved everything over */
|
||||
netlbl_domhsh_free_entry(&entry->rcu);
|
||||
} else
|
||||
ret_val = -EINVAL;
|
||||
|
||||
|
@ -593,6 +596,12 @@ int netlbl_domhsh_remove_entry(struct netlbl_dom_map *entry,
|
|||
{
|
||||
int ret_val = 0;
|
||||
struct audit_buffer *audit_buf;
|
||||
struct netlbl_af4list *iter4;
|
||||
struct netlbl_domaddr4_map *map4;
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
struct netlbl_af6list *iter6;
|
||||
struct netlbl_domaddr6_map *map6;
|
||||
#endif /* IPv6 */
|
||||
|
||||
if (entry == NULL)
|
||||
return -ENOENT;
|
||||
|
@ -610,6 +619,9 @@ int netlbl_domhsh_remove_entry(struct netlbl_dom_map *entry,
|
|||
ret_val = -ENOENT;
|
||||
spin_unlock(&netlbl_domhsh_lock);
|
||||
|
||||
if (ret_val)
|
||||
return ret_val;
|
||||
|
||||
audit_buf = netlbl_audit_start_common(AUDIT_MAC_MAP_DEL, audit_info);
|
||||
if (audit_buf != NULL) {
|
||||
audit_log_format(audit_buf,
|
||||
|
@ -619,40 +631,29 @@ int netlbl_domhsh_remove_entry(struct netlbl_dom_map *entry,
|
|||
audit_log_end(audit_buf);
|
||||
}
|
||||
|
||||
if (ret_val == 0) {
|
||||
struct netlbl_af4list *iter4;
|
||||
struct netlbl_domaddr4_map *map4;
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
struct netlbl_af6list *iter6;
|
||||
struct netlbl_domaddr6_map *map6;
|
||||
#endif /* IPv6 */
|
||||
|
||||
switch (entry->def.type) {
|
||||
case NETLBL_NLTYPE_ADDRSELECT:
|
||||
netlbl_af4list_foreach_rcu(iter4,
|
||||
&entry->def.addrsel->list4) {
|
||||
map4 = netlbl_domhsh_addr4_entry(iter4);
|
||||
cipso_v4_doi_putdef(map4->def.cipso);
|
||||
}
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
netlbl_af6list_foreach_rcu(iter6,
|
||||
&entry->def.addrsel->list6) {
|
||||
map6 = netlbl_domhsh_addr6_entry(iter6);
|
||||
calipso_doi_putdef(map6->def.calipso);
|
||||
}
|
||||
#endif /* IPv6 */
|
||||
break;
|
||||
case NETLBL_NLTYPE_CIPSOV4:
|
||||
cipso_v4_doi_putdef(entry->def.cipso);
|
||||
break;
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
case NETLBL_NLTYPE_CALIPSO:
|
||||
calipso_doi_putdef(entry->def.calipso);
|
||||
break;
|
||||
#endif /* IPv6 */
|
||||
switch (entry->def.type) {
|
||||
case NETLBL_NLTYPE_ADDRSELECT:
|
||||
netlbl_af4list_foreach_rcu(iter4, &entry->def.addrsel->list4) {
|
||||
map4 = netlbl_domhsh_addr4_entry(iter4);
|
||||
cipso_v4_doi_putdef(map4->def.cipso);
|
||||
}
|
||||
call_rcu(&entry->rcu, netlbl_domhsh_free_entry);
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
netlbl_af6list_foreach_rcu(iter6, &entry->def.addrsel->list6) {
|
||||
map6 = netlbl_domhsh_addr6_entry(iter6);
|
||||
calipso_doi_putdef(map6->def.calipso);
|
||||
}
|
||||
#endif /* IPv6 */
|
||||
break;
|
||||
case NETLBL_NLTYPE_CIPSOV4:
|
||||
cipso_v4_doi_putdef(entry->def.cipso);
|
||||
break;
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
case NETLBL_NLTYPE_CALIPSO:
|
||||
calipso_doi_putdef(entry->def.calipso);
|
||||
break;
|
||||
#endif /* IPv6 */
|
||||
}
|
||||
call_rcu(&entry->rcu, netlbl_domhsh_free_entry);
|
||||
|
||||
return ret_val;
|
||||
}
|
||||
|
|
|
@ -7643,8 +7643,6 @@ static long sctp_get_port_local(struct sock *sk, union sctp_addr *addr)
|
|||
|
||||
pr_debug("%s: begins, snum:%d\n", __func__, snum);
|
||||
|
||||
local_bh_disable();
|
||||
|
||||
if (snum == 0) {
|
||||
/* Search for an available port. */
|
||||
int low, high, remaining, index;
|
||||
|
@ -7663,20 +7661,21 @@ static long sctp_get_port_local(struct sock *sk, union sctp_addr *addr)
|
|||
continue;
|
||||
index = sctp_phashfn(sock_net(sk), rover);
|
||||
head = &sctp_port_hashtable[index];
|
||||
spin_lock(&head->lock);
|
||||
spin_lock_bh(&head->lock);
|
||||
sctp_for_each_hentry(pp, &head->chain)
|
||||
if ((pp->port == rover) &&
|
||||
net_eq(sock_net(sk), pp->net))
|
||||
goto next;
|
||||
break;
|
||||
next:
|
||||
spin_unlock(&head->lock);
|
||||
spin_unlock_bh(&head->lock);
|
||||
cond_resched();
|
||||
} while (--remaining > 0);
|
||||
|
||||
/* Exhausted local port range during search? */
|
||||
ret = 1;
|
||||
if (remaining <= 0)
|
||||
goto fail;
|
||||
return ret;
|
||||
|
||||
/* OK, here is the one we will use. HEAD (the port
|
||||
* hash table list entry) is non-NULL and we hold it's
|
||||
|
@ -7691,7 +7690,7 @@ static long sctp_get_port_local(struct sock *sk, union sctp_addr *addr)
|
|||
* port iterator, pp being NULL.
|
||||
*/
|
||||
head = &sctp_port_hashtable[sctp_phashfn(sock_net(sk), snum)];
|
||||
spin_lock(&head->lock);
|
||||
spin_lock_bh(&head->lock);
|
||||
sctp_for_each_hentry(pp, &head->chain) {
|
||||
if ((pp->port == snum) && net_eq(pp->net, sock_net(sk)))
|
||||
goto pp_found;
|
||||
|
@ -7773,10 +7772,7 @@ static long sctp_get_port_local(struct sock *sk, union sctp_addr *addr)
|
|||
ret = 0;
|
||||
|
||||
fail_unlock:
|
||||
spin_unlock(&head->lock);
|
||||
|
||||
fail:
|
||||
local_bh_enable();
|
||||
spin_unlock_bh(&head->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -2565,18 +2565,21 @@ static int tipc_shutdown(struct socket *sock, int how)
|
|||
lock_sock(sk);
|
||||
|
||||
__tipc_shutdown(sock, TIPC_CONN_SHUTDOWN);
|
||||
sk->sk_shutdown = SEND_SHUTDOWN;
|
||||
if (tipc_sk_type_connectionless(sk))
|
||||
sk->sk_shutdown = SHUTDOWN_MASK;
|
||||
else
|
||||
sk->sk_shutdown = SEND_SHUTDOWN;
|
||||
|
||||
if (sk->sk_state == TIPC_DISCONNECTING) {
|
||||
/* Discard any unreceived messages */
|
||||
__skb_queue_purge(&sk->sk_receive_queue);
|
||||
|
||||
/* Wake up anyone sleeping in poll */
|
||||
sk->sk_state_change(sk);
|
||||
res = 0;
|
||||
} else {
|
||||
res = -ENOTCONN;
|
||||
}
|
||||
/* Wake up anyone sleeping in poll. */
|
||||
sk->sk_state_change(sk);
|
||||
|
||||
release_sock(sk);
|
||||
return res;
|
||||
|
|
|
@ -225,11 +225,39 @@ static void snd_tscm_remove(struct fw_unit *unit)
|
|||
}
|
||||
|
||||
static const struct ieee1394_device_id snd_tscm_id_table[] = {
|
||||
// Tascam, FW-1884.
|
||||
{
|
||||
.match_flags = IEEE1394_MATCH_VENDOR_ID |
|
||||
IEEE1394_MATCH_SPECIFIER_ID,
|
||||
IEEE1394_MATCH_SPECIFIER_ID |
|
||||
IEEE1394_MATCH_VERSION,
|
||||
.vendor_id = 0x00022e,
|
||||
.specifier_id = 0x00022e,
|
||||
.version = 0x800000,
|
||||
},
|
||||
// Tascam, FE-8 (.version = 0x800001)
|
||||
// This kernel module doesn't support FE-8 because the most of features
|
||||
// can be implemented in userspace without any specific support of this
|
||||
// module.
|
||||
//
|
||||
// .version = 0x800002 is unknown.
|
||||
//
|
||||
// Tascam, FW-1082.
|
||||
{
|
||||
.match_flags = IEEE1394_MATCH_VENDOR_ID |
|
||||
IEEE1394_MATCH_SPECIFIER_ID |
|
||||
IEEE1394_MATCH_VERSION,
|
||||
.vendor_id = 0x00022e,
|
||||
.specifier_id = 0x00022e,
|
||||
.version = 0x800003,
|
||||
},
|
||||
// Tascam, FW-1804.
|
||||
{
|
||||
.match_flags = IEEE1394_MATCH_VENDOR_ID |
|
||||
IEEE1394_MATCH_SPECIFIER_ID |
|
||||
IEEE1394_MATCH_VERSION,
|
||||
.vendor_id = 0x00022e,
|
||||
.specifier_id = 0x00022e,
|
||||
.version = 0x800004,
|
||||
},
|
||||
/* FE-08 requires reverse-engineering because it just has faders. */
|
||||
{}
|
||||
|
|
Loading…
Reference in a new issue