This is the 4.4.193 stable release
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl1/KBYACgkQONu9yGCS aT4ubg//drwICDaJ09JHnZJ8ojogmPqKUbnit65qKADxhOG3ikwaESXlghZHjZKl SbZTnzb562WVzMSCU9WBDEx2DQJcY/EtM4y140yP08GRDUfeqCoCTScysbCSlY5j 3B8ztlT/yNtuiGiFdaR9kCkwcV60++rdVyZ0+xeSMYpUdG9T9xkAmOCPZlvpWmjH a4VRG1oKdGTcPbxVe/7j4bwUvXacOhjHtn31cQaOeSRmPS5kwB5T4MOBSXPjzRmk VgyvniL/oNrqeCsFuK2NUjepv6yui1uDIQyc+/t5cdCTQWbIfI/PejZxgX6SZvt6 qrt4ZuKpBTFXp6H/Hiy1KJ9cqHkqpkiGN0ggwzsz89asP0sXJa3h9Wp7u2e5OzsS rXNOFoO3CnGoWkummrWxKsvimwyieMUW473JD17QwUom/0KlpF3A9nYZFsAXUyOf WDLgMAmQblPl3sMmyE0FT2vm5RBbb70UbvP3NGB4HboB5f0A26cmedAl5QuG/Cj6 /X1InHlJPK2DSKBy4CLH2z23RncVBPERRt8ZZCTHYutqfOPOjIh11PA7V7RJkFkK GHBzK2wUR0DYjG+C3Rxr5trX9SGSC9G38jw40+E7IGZVyN9FrajK5WPIm8vJ7Ovk yJgLDzGIP8gqsfVwSUALLD9si0ol6UxjBxmvf3oijx+/ZAZUJBM= =+5vp -----END PGP SIGNATURE----- Merge 4.4.193 into android-4.4-p Changes in 4.4.193 ALSA: hda - Fix potential endless loop at applying quirks ALSA: hda/realtek - Fix overridden device-specific initialization xfrm: clean up xfrm protocol checks vhost/test: fix build for vhost test scripts/decode_stacktrace: match basepath using shell prefix operator, not regex clk: s2mps11: Add used attribute to s2mps11_dt_match x86, boot: Remove multiple copy of static function sanitize_boot_params() af_packet: tone down the Tx-ring unsupported spew. vhost: make sure log_num < in_num Linux 4.4.193 Change-Id: If2283bf8bc29f3deaf1c047c8ec9e502fbdf0521 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
83f541302c
16 changed files with 45 additions and 30 deletions
2
Makefile
2
Makefile
|
@ -1,6 +1,6 @@
|
|||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
SUBLEVEL = 192
|
||||
SUBLEVEL = 193
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "misc.h"
|
||||
#include "../string.h"
|
||||
#include <asm/bootparam_utils.h>
|
||||
|
||||
/* WARNING!!
|
||||
* This code is compiled with -fPIC and it is relocated dynamically
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
#include <asm/page.h>
|
||||
#include <asm/boot.h>
|
||||
#include <asm/bootparam.h>
|
||||
#include "../string.h"
|
||||
#include <asm/bootparam_utils.h>
|
||||
|
||||
#define BOOT_BOOT_H
|
||||
#include "../ctype.h"
|
||||
|
|
|
@ -307,7 +307,7 @@ MODULE_DEVICE_TABLE(platform, s2mps11_clk_id);
|
|||
* This requires of_device_id table. In the same time this will not change the
|
||||
* actual *device* matching so do not add .of_match_table.
|
||||
*/
|
||||
static const struct of_device_id s2mps11_dt_match[] = {
|
||||
static const struct of_device_id s2mps11_dt_match[] __used = {
|
||||
{
|
||||
.compatible = "samsung,s2mps11-clk",
|
||||
.data = (void *)S2MPS11X,
|
||||
|
|
|
@ -23,6 +23,12 @@
|
|||
* Using this limit prevents one virtqueue from starving others. */
|
||||
#define VHOST_TEST_WEIGHT 0x80000
|
||||
|
||||
/* Max number of packets transferred before requeueing the job.
|
||||
* Using this limit prevents one virtqueue from starving others with
|
||||
* pkts.
|
||||
*/
|
||||
#define VHOST_TEST_PKT_WEIGHT 256
|
||||
|
||||
enum {
|
||||
VHOST_TEST_VQ = 0,
|
||||
VHOST_TEST_VQ_MAX = 1,
|
||||
|
@ -81,10 +87,8 @@ static void handle_vq(struct vhost_test *n)
|
|||
}
|
||||
vhost_add_used_and_signal(&n->dev, vq, head, 0);
|
||||
total_len += len;
|
||||
if (unlikely(total_len >= VHOST_TEST_WEIGHT)) {
|
||||
vhost_poll_queue(&vq->poll);
|
||||
if (unlikely(vhost_exceeds_weight(vq, 0, total_len)))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mutex_unlock(&vq->mutex);
|
||||
|
@ -116,7 +120,8 @@ static int vhost_test_open(struct inode *inode, struct file *f)
|
|||
dev = &n->dev;
|
||||
vqs[VHOST_TEST_VQ] = &n->vqs[VHOST_TEST_VQ];
|
||||
n->vqs[VHOST_TEST_VQ].handle_kick = handle_vq_kick;
|
||||
vhost_dev_init(dev, vqs, VHOST_TEST_VQ_MAX);
|
||||
vhost_dev_init(dev, vqs, VHOST_TEST_VQ_MAX,
|
||||
VHOST_TEST_PKT_WEIGHT, VHOST_TEST_WEIGHT);
|
||||
|
||||
f->private_data = n;
|
||||
|
||||
|
|
|
@ -1910,7 +1910,7 @@ static int get_indirect(struct vhost_virtqueue *vq,
|
|||
/* If this is an input descriptor, increment that count. */
|
||||
if (access == VHOST_ACCESS_WO) {
|
||||
*in_num += ret;
|
||||
if (unlikely(log)) {
|
||||
if (unlikely(log && ret)) {
|
||||
log[*log_num].addr = vhost64_to_cpu(vq, desc.addr);
|
||||
log[*log_num].len = vhost32_to_cpu(vq, desc.len);
|
||||
++*log_num;
|
||||
|
@ -2046,7 +2046,7 @@ int vhost_get_vq_desc(struct vhost_virtqueue *vq,
|
|||
/* If this is an input descriptor,
|
||||
* increment that count. */
|
||||
*in_num += ret;
|
||||
if (unlikely(log)) {
|
||||
if (unlikely(log && ret)) {
|
||||
log[*log_num].addr = vhost64_to_cpu(vq, desc.addr);
|
||||
log[*log_num].len = vhost32_to_cpu(vq, desc.len);
|
||||
++*log_num;
|
||||
|
|
|
@ -1304,6 +1304,23 @@ static inline int xfrm_state_kern(const struct xfrm_state *x)
|
|||
return atomic_read(&x->tunnel_users);
|
||||
}
|
||||
|
||||
static inline bool xfrm_id_proto_valid(u8 proto)
|
||||
{
|
||||
switch (proto) {
|
||||
case IPPROTO_AH:
|
||||
case IPPROTO_ESP:
|
||||
case IPPROTO_COMP:
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
case IPPROTO_ROUTING:
|
||||
case IPPROTO_DSTOPTS:
|
||||
#endif
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* IPSEC_PROTO_ANY only matches 3 IPsec protocols, 0 could match all. */
|
||||
static inline int xfrm_id_proto_match(u8 proto, u8 userproto)
|
||||
{
|
||||
return (!userproto || proto == userproto ||
|
||||
|
|
|
@ -1969,8 +1969,10 @@ parse_ipsecrequest(struct xfrm_policy *xp, struct sadb_x_ipsecrequest *rq)
|
|||
|
||||
if (rq->sadb_x_ipsecrequest_mode == 0)
|
||||
return -EINVAL;
|
||||
if (!xfrm_id_proto_valid(rq->sadb_x_ipsecrequest_proto))
|
||||
return -EINVAL;
|
||||
|
||||
t->id.proto = rq->sadb_x_ipsecrequest_proto; /* XXX check proto */
|
||||
t->id.proto = rq->sadb_x_ipsecrequest_proto;
|
||||
if ((mode = pfkey_mode_to_xfrm(rq->sadb_x_ipsecrequest_mode)) < 0)
|
||||
return -EINVAL;
|
||||
t->mode = mode;
|
||||
|
|
|
@ -4176,7 +4176,7 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u,
|
|||
|
||||
/* Opening a Tx-ring is NOT supported in TPACKET_V3 */
|
||||
if (!closing && tx_ring && (po->tp_version > TPACKET_V2)) {
|
||||
WARN(1, "Tx-ring is not supported.\n");
|
||||
net_warn_ratelimited("Tx-ring is not supported.\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
@ -2128,7 +2128,7 @@ void xfrm_state_fini(struct net *net)
|
|||
unsigned int sz;
|
||||
|
||||
flush_work(&net->xfrm.state_hash_work);
|
||||
xfrm_state_flush(net, IPSEC_PROTO_ANY, false);
|
||||
xfrm_state_flush(net, 0, false);
|
||||
flush_work(&net->xfrm.state_gc_work);
|
||||
|
||||
WARN_ON(!list_empty(&net->xfrm.state_all));
|
||||
|
|
|
@ -1456,20 +1456,8 @@ static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (ut[i].id.proto) {
|
||||
case IPPROTO_AH:
|
||||
case IPPROTO_ESP:
|
||||
case IPPROTO_COMP:
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
case IPPROTO_ROUTING:
|
||||
case IPPROTO_DSTOPTS:
|
||||
#endif
|
||||
case IPSEC_PROTO_ANY:
|
||||
break;
|
||||
default:
|
||||
if (!xfrm_id_proto_valid(ut[i].id.proto))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -64,7 +64,7 @@ parse_symbol() {
|
|||
fi
|
||||
|
||||
# Strip out the base of the path
|
||||
code=${code//^$basepath/""}
|
||||
code=${code#$basepath/}
|
||||
|
||||
# In the case of inlines, move everything to same line
|
||||
code=${code//$'\n'/' '}
|
||||
|
|
|
@ -827,6 +827,8 @@ static void apply_fixup(struct hda_codec *codec, int id, int action, int depth)
|
|||
while (id >= 0) {
|
||||
const struct hda_fixup *fix = codec->fixup_list + id;
|
||||
|
||||
if (++depth > 10)
|
||||
break;
|
||||
if (fix->chained_before)
|
||||
apply_fixup(codec, fix->chain_id, action, depth + 1);
|
||||
|
||||
|
@ -866,8 +868,6 @@ static void apply_fixup(struct hda_codec *codec, int id, int action, int depth)
|
|||
}
|
||||
if (!fix->chained || fix->chained_before)
|
||||
break;
|
||||
if (++depth > 10)
|
||||
break;
|
||||
id = fix->chain_id;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5826,7 +5826,8 @@ int snd_hda_gen_init(struct hda_codec *codec)
|
|||
if (spec->init_hook)
|
||||
spec->init_hook(codec);
|
||||
|
||||
snd_hda_apply_verbs(codec);
|
||||
if (!spec->skip_verbs)
|
||||
snd_hda_apply_verbs(codec);
|
||||
|
||||
init_multi_out(codec);
|
||||
init_extra_out(codec);
|
||||
|
|
|
@ -236,6 +236,7 @@ struct hda_gen_spec {
|
|||
unsigned int indep_hp_enabled:1; /* independent HP enabled */
|
||||
unsigned int have_aamix_ctl:1;
|
||||
unsigned int hp_mic_jack_modes:1;
|
||||
unsigned int skip_verbs:1; /* don't apply verbs at snd_hda_gen_init() */
|
||||
|
||||
/* additional mute flags (only effective with auto_mute_via_amp=1) */
|
||||
u64 mute_bits;
|
||||
|
|
|
@ -772,9 +772,11 @@ static int alc_init(struct hda_codec *codec)
|
|||
if (spec->init_hook)
|
||||
spec->init_hook(codec);
|
||||
|
||||
spec->gen.skip_verbs = 1; /* applied in below */
|
||||
snd_hda_gen_init(codec);
|
||||
alc_fix_pll(codec);
|
||||
alc_auto_init_amp(codec, spec->init_amp);
|
||||
snd_hda_apply_verbs(codec); /* apply verbs here after own init */
|
||||
|
||||
snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_INIT);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue