This is the 5.4.46 stable release

-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl7hJXwACgkQONu9yGCS
 aT4XEg/+LgiOluf+/CBv29J9TTf47uUl8VrhhFY6w5nbrOL5h/QMJnkjfSGelXxO
 3LFRXwUI4zdZQ4fdMhjuGdBBbALpzw0krkiLZ0v4uc4fDqPtBvqLBRxM6VQppKf2
 YsqU9OpbdhVo4ioTVUvBjigeR50YfZBquSrnOxL6ntqsKRmc10ms3A9TvEhyXnFv
 G1Np+NYJwRX8oYTE0awte41lqfORrf9Xs92YeEc/xr9RDvWb4BkSJCZszba8povl
 5+2yte9kQSE/S958gh1zT3UQ98FtIrYoJ4EJGfA0nNZDPvquYo3bgkXAlJyos1q1
 3oJ+mNAyJFWViQTxRgOMOfxpn6JNXGzPIxmg9AsLCx9Qju5jYbSkgby0gRh0vf8y
 ym9TcrIXXfAVP7160anolZXRvsvkeGZUiulWraulhXvhOlUL2r+F4Ybh/2nsSWn4
 6UGDahJAspPXj0RttJdjfcOEiOLVUgVywUW/j+vjTRURfvQC9CetjrPT1Yajn0Od
 x0YrlTS5jqHItglIwbotV8JdLBRMtkYwXO3tQrSdZ3McwfEm21zc0jwC4ZWhpNkX
 mV733TrTvx889lEUBE+B2zzUi6+BTv6904C7e2gncuWaT3ORfsoV4djsPqYNWwk3
 8ty9MmxmLs6T6cUQ4dzoUwR51stp2S8ppW9Zl7TtSnvKaKsBlvw=
 =Pyeq
 -----END PGP SIGNATURE-----

Merge 5.4.46 into android-5.4-stable

Changes in 5.4.46
	devinet: fix memleak in inetdev_init()
	l2tp: add sk_family checks to l2tp_validate_socket
	l2tp: do not use inet_hash()/inet_unhash()
	net/mlx5: Fix crash upon suspend/resume
	net: stmmac: enable timestamp snapshot for required PTP packets in dwmac v5.10a
	net: usb: qmi_wwan: add Telit LE910C1-EUX composition
	NFC: st21nfca: add missed kfree_skb() in an error path
	nfp: flower: fix used time of merge flow statistics
	vsock: fix timeout in vsock_accept()
	net: check untrusted gso_size at kernel entry
	net: be more gentle about silly gso requests coming from user
	USB: serial: qcserial: add DW5816e QDL support
	USB: serial: usb_wwan: do not resubmit rx urb on fatal errors
	USB: serial: option: add Telit LE910C1-EUX compositions
	USB: serial: ch341: add basis for quirk detection
	iio:chemical:sps30: Fix timestamp alignment
	iio: vcnl4000: Fix i2c swapped word reading.
	iio:chemical:pms7003: Fix timestamp alignment and prevent data leak.
	iio: adc: stm32-adc: fix a wrong error message when probing interrupts
	usb: musb: start session in resume for host port
	usb: musb: Fix runtime PM imbalance on error
	vt: keyboard: avoid signed integer overflow in k_ascii
	tty: hvc_console, fix crashes on parallel open/close
	staging: rtl8712: Fix IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK
	CDC-ACM: heed quirk also in error handling
	nvmem: qfprom: remove incorrect write support
	x86/speculation/spectre_v2: Exclude Zhaoxin CPUs from SPECTRE_V2
	x86/cpu: Add a steppings field to struct x86_cpu_id
	x86/cpu: Add 'table' argument to cpu_matches()
	x86/speculation: Add Special Register Buffer Data Sampling (SRBDS) mitigation
	x86/speculation: Add SRBDS vulnerability and mitigation documentation
	x86/speculation: Add Ivy Bridge to affected list
	uprobes: ensure that uprobe->offset and ->ref_ctr_offset are properly aligned
	Revert "net/mlx5: Annotate mutex destroy for root ns"
	Linux 5.4.46

Signed-off-by: Greg Kroah-Hartman <[email protected]>
Change-Id: I58f55a0ee645d89fb91748a2d378bffea65e24dd
This commit is contained in:
Greg Kroah-Hartman 2020-06-11 09:14:42 +02:00
commit 34a7766e99
42 changed files with 626 additions and 134 deletions

View file

@ -371,15 +371,14 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
* tty fields and return the kref reference.
*/
if (rc) {
tty_port_tty_set(&hp->port, NULL);
tty->driver_data = NULL;
tty_port_put(&hp->port);
printk(KERN_ERR "hvc_open: request_irq failed with rc %d.\n", rc);
} else
} else {
/* We are ready... raise DTR/RTS */
if (C_BAUD(tty))
if (hp->ops->dtr_rts)
hp->ops->dtr_rts(hp, 1);
tty_port_set_initialized(&hp->port, true);
}
/* Force wakeup of the polling thread */
hvc_kick();
@ -389,22 +388,12 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
static void hvc_close(struct tty_struct *tty, struct file * filp)
{
struct hvc_struct *hp;
struct hvc_struct *hp = tty->driver_data;
unsigned long flags;
if (tty_hung_up_p(filp))
return;
/*
* No driver_data means that this close was issued after a failed
* hvc_open by the tty layer's release_dev() function and we can just
* exit cleanly because the kref reference wasn't made.
*/
if (!tty->driver_data)
return;
hp = tty->driver_data;
spin_lock_irqsave(&hp->port.lock, flags);
if (--hp->port.count == 0) {
@ -412,6 +401,9 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
/* We are done with the tty pointer now. */
tty_port_tty_set(&hp->port, NULL);
if (!tty_port_initialized(&hp->port))
return;
if (C_HUPCL(tty))
if (hp->ops->dtr_rts)
hp->ops->dtr_rts(hp, 0);
@ -428,6 +420,7 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
* waking periodically to check chars_in_buffer().
*/
tty_wait_until_sent(tty, HVC_CLOSE_WAIT);
tty_port_set_initialized(&hp->port, false);
} else {
if (hp->port.count < 0)
printk(KERN_ERR "hvc_close %X: oops, count is %d\n",

View file

@ -127,7 +127,11 @@ static DEFINE_SPINLOCK(func_buf_lock); /* guard 'func_buf' and friends */
static unsigned long key_down[BITS_TO_LONGS(KEY_CNT)]; /* keyboard key bitmap */
static unsigned char shift_down[NR_SHIFT]; /* shift state counters.. */
static bool dead_key_next;
static int npadch = -1; /* -1 or number assembled on pad */
/* Handles a number being assembled on the number pad */
static bool npadch_active;
static unsigned int npadch_value;
static unsigned int diacr;
static char rep; /* flag telling character repeat */
@ -845,12 +849,12 @@ static void k_shift(struct vc_data *vc, unsigned char value, char up_flag)
shift_state &= ~(1 << value);
/* kludge */
if (up_flag && shift_state != old_state && npadch != -1) {
if (up_flag && shift_state != old_state && npadch_active) {
if (kbd->kbdmode == VC_UNICODE)
to_utf8(vc, npadch);
to_utf8(vc, npadch_value);
else
put_queue(vc, npadch & 0xff);
npadch = -1;
put_queue(vc, npadch_value & 0xff);
npadch_active = false;
}
}
@ -868,7 +872,7 @@ static void k_meta(struct vc_data *vc, unsigned char value, char up_flag)
static void k_ascii(struct vc_data *vc, unsigned char value, char up_flag)
{
int base;
unsigned int base;
if (up_flag)
return;
@ -882,10 +886,12 @@ static void k_ascii(struct vc_data *vc, unsigned char value, char up_flag)
base = 16;
}
if (npadch == -1)
npadch = value;
else
npadch = npadch * base + value;
if (!npadch_active) {
npadch_value = 0;
npadch_active = true;
}
npadch_value = npadch_value * base + value;
}
static void k_lock(struct vc_data *vc, unsigned char value, char up_flag)