Linux 5.4.159
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 158 +SUBLEVEL = 159 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/x86/kvm/ioapic.c +1 -1
@@ -91,7 +91,7 @@ static unsigned long ioapic_read_indirect(struct kvm_ioapic *ioapic,static void rtc_irq_eoi_tracking_reset (struct kvm_ioapic *ioapic) { ioapic->rtc_status.pending_eoi =0 ; -bitmap_zero (ioapic->rtc_status.dest_map.map,KVM_MAX_VCPU_ID +1 ); +bitmap_zero (ioapic->rtc_status.dest_map.map,KVM_MAX_VCPU_ID ); }static void kvm_rtc_eoi_tracking_restore_all (struct kvm_ioapic *ioapic);
arch/x86/kvm/ioapic.h +2 -2
@@ -43,13 +43,13 @@ struct kvm_vcpu;struct dest_map {/* vcpu bitmap where IRQ has been sent */ - DECLARE_BITMAP(map, KVM_MAX_VCPU_ID + 1); + DECLARE_BITMAP(map, KVM_MAX_VCPU_ID);/* * Vector sent to a given vcpu, only valid when * the vcpu's bit in map is set */ -u8 vectors[KVM_MAX_VCPU_ID +1 ]; +u8 vectors[KVM_MAX_VCPU_ID ]; };
drivers/android/binder.c +7 -7
@@ -2257,7 +2257,7 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,binder_dec_node (buffer->target_node,1 ,0 ); off_start_offset =ALIGN (buffer->data_size,sizeof (void *)); - off_end_offset = is_failure ? failed_at : + off_end_offset = is_failure && failed_at ? failed_at : off_start_offset + buffer->offsets_size;for (buffer_offset = off_start_offset; buffer_offset < off_end_offset; buffer_offset +=sizeof (binder_size_t)) {
@@ -2343,9 +2343,8 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,binder_size_t fd_buf_size;binder_size_t num_valid; -if (proc->tsk != current->group_leader) { +if (is_failure) {/* -* Nothing to do if running in sender context * The fd fixups have not been applied so no * fds need to be closed. */
@@ -3548,6 +3547,7 @@ static void binder_transaction(struct binder_proc *proc,* binder_free_buf() - free the specified buffer * @proc: binder proc that owns buffer * @buffer: buffer to be freed +* @is_failure: failed to send transaction * * If buffer for an async transaction, enqueue the next async * transaction from the node.
@@ -3557,7 +3557,7 @@ static void binder_transaction(struct binder_proc *proc,static void binder_free_buf (struct binder_proc *proc,struct binder_thread *thread, -struct binder_buffer *buffer) +struct binder_buffer *buffer,bool is_failure) {binder_inner_proc_lock (proc);if (buffer->transaction) {
@@ -3585,7 +3585,7 @@ binder_free_buf(struct binder_proc *proc,binder_node_inner_unlock (buf_node); }trace_binder_transaction_buffer_release (buffer); -binder_transaction_buffer_release (proc, thread, buffer,0 , false); +binder_transaction_buffer_release (proc, thread, buffer,0 , is_failure);binder_alloc_free_buf (&proc->alloc, buffer); }
@@ -3786,7 +3786,7 @@ static int binder_thread_write(struct binder_proc *proc, proc->pid, thread->pid, (u64 )data_ptr, buffer->debug_id, buffer->transaction ? "active" : "finished"); -binder_free_buf (proc, thread, buffer); +binder_free_buf (proc, thread, buffer, false);break ; }
@@ -4474,7 +4474,7 @@ static int binder_thread_read(struct binder_proc *proc, buffer->transaction =NULL ;binder_cleanup_transaction (t,"fd fixups failed" ,BR_FAILED_REPLY ); -binder_free_buf (proc, thread, buffer); +binder_free_buf (proc, thread, buffer, true); binder_debug(BINDER_DEBUG_FAILED_TRANSACTION, "%d:%d %stransaction %d fd fixups failed %d/%d, line %d\n", proc->pid, thread->pid,
drivers/net/wireless/rsi/rsi_91x_usb.c +1 -1
@@ -61,7 +61,7 @@ static int rsi_usb_card_write(struct rsi_hw *adapter, (void *)seg, (int )len, &transfer, - HZ * 5); + USB_CTRL_SET_TIMEOUT);if (status <0 ) { rsi_dbg(ERR_ZONE,
drivers/staging/comedi/drivers/dt9812.c +86 -29
172 lines not on this page · raw message
drivers/staging/comedi/drivers/ni_usb6501.c +10 -0
@@ -144,6 +144,10 @@ static const u8 READ_COUNTER_RESPONSE[] = {0x00, 0x01, 0x00, 0x10,0x00 ,0x00 ,0x00 ,0x02 , 0x00, 0x00, 0x00, 0x00}; +/* Largest supported packets */ +static const size_t TX_MAX_SIZE =sizeof (SET_PORT_DIR_REQUEST ); +static const size_t RX_MAX_SIZE =sizeof (READ_PORT_RESPONSE ); +enum commands {READ_PORT , WRITE_PORT,
@@ -501,6 +505,12 @@ static int ni6501_find_endpoints(struct comedi_device *dev)if (!devpriv->ep_rx || !devpriv->ep_tx)return -ENODEV ; +if (usb_endpoint_maxp (devpriv->ep_rx) <RX_MAX_SIZE ) +return -ENODEV ; + +if (usb_endpoint_maxp (devpriv->ep_tx) <TX_MAX_SIZE ) +return -ENODEV ; +return 0 ; }
drivers/staging/comedi/drivers/vmk80xx.c +15 -13
@@ -90,6 +90,9 @@ enum {#define IC3_VERSION BIT(0)#define IC6_VERSION BIT(1) +#define MIN_BUF_SIZE 64 +#define PACKET_TIMEOUT 10000/* ms */ +enum vmk80xx_model {VMK8055_MODEL ,VMK8061_MODEL
@@ -157,22 +160,21 @@ static void vmk80xx_do_bulk_msg(struct comedi_device *dev)__u8 rx_addr;unsigned int tx_pipe;unsigned int rx_pipe; -size_t size; +size_t tx_size; +size_t rx_size; tx_addr = devpriv->ep_tx->bEndpointAddress; rx_addr = devpriv->ep_rx->bEndpointAddress; tx_pipe =usb_sndbulkpipe (usb, tx_addr); rx_pipe =usb_rcvbulkpipe (usb, rx_addr); + tx_size =usb_endpoint_maxp (devpriv->ep_tx); + rx_size =usb_endpoint_maxp (devpriv->ep_rx); -/* -* The max packet size attributes of the K8061 -* input/output endpoints are identical -*/ - size =usb_endpoint_maxp (devpriv->ep_tx); +usb_bulk_msg (usb, tx_pipe, devpriv->usb_tx_buf, tx_size,NULL , +PACKET_TIMEOUT ); -usb_bulk_msg (usb, tx_pipe, devpriv->usb_tx_buf, - size,NULL , devpriv->ep_tx->bInterval); -usb_bulk_msg (usb, rx_pipe, devpriv->usb_rx_buf, size,NULL ,HZ *10 ); +usb_bulk_msg (usb, rx_pipe, devpriv->usb_rx_buf, rx_size,NULL , +PACKET_TIMEOUT ); }static int vmk80xx_read_packet (struct comedi_device *dev)
@@ -191,7 +193,7 @@ static int vmk80xx_read_packet(struct comedi_device *dev) pipe =usb_rcvintpipe (usb, ep->bEndpointAddress);return usb_interrupt_msg (usb, pipe, devpriv->usb_rx_buf,usb_endpoint_maxp (ep),NULL , -HZ *10 ); +PACKET_TIMEOUT ); }static int vmk80xx_write_packet (struct comedi_device *dev,int cmd)
@@ -212,7 +214,7 @@ static int vmk80xx_write_packet(struct comedi_device *dev, int cmd) pipe =usb_sndintpipe (usb, ep->bEndpointAddress);return usb_interrupt_msg (usb, pipe, devpriv->usb_tx_buf,usb_endpoint_maxp (ep),NULL , -HZ *10 ); +PACKET_TIMEOUT ); }static int vmk80xx_reset_device (struct comedi_device *dev)
@@ -678,12 +680,12 @@ static int vmk80xx_alloc_usb_buffers(struct comedi_device *dev)struct vmk80xx_private *devpriv = dev->private;size_t size; - size =usb_endpoint_maxp (devpriv->ep_rx); + size =max (usb_endpoint_maxp (devpriv->ep_rx),MIN_BUF_SIZE ); devpriv->usb_rx_buf =kzalloc (size,GFP_KERNEL );if (!devpriv->usb_rx_buf)return -ENOMEM ; - size =usb_endpoint_maxp (devpriv->ep_tx); + size =max (usb_endpoint_maxp (devpriv->ep_rx),MIN_BUF_SIZE ); devpriv->usb_tx_buf =kzalloc (size,GFP_KERNEL );if (!devpriv->usb_tx_buf)return -ENOMEM ;
drivers/staging/media/ipu3/ipu3-css-fw.c +3 -4
@@ -124,12 +124,11 @@ int imgu_css_fw_init(struct imgu_css *css)/* Check and display fw header info */ css->fwp = (struct imgu_fw_header *)css->fw->data; -if (css->fw->size <sizeof (struct imgu_fw_header *) || +if (css->fw->size <struct_size (css->fwp, binary_header,1 ) || css->fwp->file_header.h_size !=sizeof (struct imgu_fw_bi_file_h )) goto bad_fw; -if (sizeof (struct imgu_fw_bi_file_h ) + - css->fwp->file_header.binary_nr *sizeof (struct imgu_fw_info ) > - css->fw->size) +if (struct_size (css->fwp, binary_header, + css->fwp->file_header.binary_nr) > css->fw->size) goto bad_fw; dev_info(dev, "loaded firmware version %.64s, %u binaries, %zu bytes\n",
drivers/staging/media/ipu3/ipu3-css-fw.h +1 -1
@@ -170,7 +170,7 @@ struct imgu_fw_bi_file_h {struct imgu_fw_header {struct imgu_fw_bi_file_h file_header; -struct imgu_fw_info binary_header[1 ];/* binary_nr items */ +struct imgu_fw_info binary_header[];/* binary_nr items */ };/******************* Firmware functions *******************/
drivers/staging/rtl8192u/r8192U_core.c +9 -9
@@ -236,7 +236,7 @@ int write_nic_byte_E(struct net_device *dev, int indx, u8 data) status =usb_control_msg (udev,usb_sndctrlpipe (udev,0 ),RTL8187_REQ_SET_REGS ,RTL8187_REQT_WRITE , - indx |0xfe00 ,0 , usbdata,1 ,HZ /2 ); + indx |0xfe00 ,0 , usbdata,1 ,500 );kfree (usbdata);if (status <0 ) {
@@ -258,7 +258,7 @@ int read_nic_byte_E(struct net_device *dev, int indx, u8 *data) status =usb_control_msg (udev,usb_rcvctrlpipe (udev,0 ),RTL8187_REQ_GET_REGS ,RTL8187_REQT_READ , - indx |0xfe00 ,0 , usbdata,1 ,HZ /2 ); + indx |0xfe00 ,0 , usbdata,1 ,500 ); *data = *usbdata;kfree (usbdata);
@@ -286,7 +286,7 @@ int write_nic_byte(struct net_device *dev, int indx, u8 data) status =usb_control_msg (udev,usb_sndctrlpipe (udev,0 ),RTL8187_REQ_SET_REGS ,RTL8187_REQT_WRITE , (indx &0xff ) |0xff00 , (indx >>8 ) &0x0f , - usbdata,1 ,HZ /2 ); + usbdata,1 ,500 );kfree (usbdata);if (status <0 ) {
@@ -313,7 +313,7 @@ int write_nic_word(struct net_device *dev, int indx, u16 data) status =usb_control_msg (udev,usb_sndctrlpipe (udev,0 ),RTL8187_REQ_SET_REGS ,RTL8187_REQT_WRITE , (indx &0xff ) |0xff00 , (indx >>8 ) &0x0f , - usbdata,2 ,HZ /2 ); + usbdata,2 ,500 );kfree (usbdata);if (status <0 ) {
@@ -340,7 +340,7 @@ int write_nic_dword(struct net_device *dev, int indx, u32 data) status =usb_control_msg (udev,usb_sndctrlpipe (udev,0 ),RTL8187_REQ_SET_REGS ,RTL8187_REQT_WRITE , (indx &0xff ) |0xff00 , (indx >>8 ) &0x0f , - usbdata,4 ,HZ /2 ); + usbdata,4 ,500 );kfree (usbdata);
@@ -367,7 +367,7 @@ int read_nic_byte(struct net_device *dev, int indx, u8 *data) status =usb_control_msg (udev,usb_rcvctrlpipe (udev,0 ),RTL8187_REQ_GET_REGS ,RTL8187_REQT_READ , (indx &0xff ) |0xff00 , (indx >>8 ) &0x0f , - usbdata,1 ,HZ /2 ); + usbdata,1 ,500 ); *data = *usbdata;kfree (usbdata);
@@ -394,7 +394,7 @@ int read_nic_word(struct net_device *dev, int indx, u16 *data) status =usb_control_msg (udev,usb_rcvctrlpipe (udev,0 ),RTL8187_REQ_GET_REGS ,RTL8187_REQT_READ , (indx &0xff ) |0xff00 , (indx >>8 ) &0x0f , - usbdata,2 ,HZ /2 ); + usbdata,2 ,500 ); *data = *usbdata;kfree (usbdata);
@@ -418,7 +418,7 @@ static int read_nic_word_E(struct net_device *dev, int indx, u16 *data) status =usb_control_msg (udev,usb_rcvctrlpipe (udev,0 ),RTL8187_REQ_GET_REGS ,RTL8187_REQT_READ , - indx |0xfe00 ,0 , usbdata,2 ,HZ /2 ); + indx |0xfe00 ,0 , usbdata,2 ,500 ); *data = *usbdata;kfree (usbdata);
@@ -444,7 +444,7 @@ int read_nic_dword(struct net_device *dev, int indx, u32 *data) status =usb_control_msg (udev,usb_rcvctrlpipe (udev,0 ),RTL8187_REQ_GET_REGS ,RTL8187_REQT_READ , (indx &0xff ) |0xff00 , (indx >>8 ) &0x0f , - usbdata,4 ,HZ /2 ); + usbdata,4 ,500 ); *data = *usbdata;kfree (usbdata);
drivers/staging/rtl8712/usb_ops_linux.c +1 -1
@@ -493,7 +493,7 @@ int r8712_usbctrl_vendorreq(struct intf_priv *pintfpriv, u8 request, u16 value,memcpy (pIo_buf, pdata, len); } status =usb_control_msg (udev, pipe, request, reqtype, value, index, - pIo_buf, len,HZ /2 ); + pIo_buf, len,500 );if (status >0 ) {/* Success this control transfer. */ if (requesttype ==0x01 ) {/* For Control read transfer, we have to copy the read
drivers/usb/gadget/udc/Kconfig +1 -0
@@ -330,6 +330,7 @@ config USB_AMD5536UDC config USB_FSL_QE tristate "Freescale QE/CPM USB Device Controller" depends on FSL_SOC && (QUICC_ENGINE || CPM) + depends on !64BIT || BROKEN help Some of Freescale PowerPC processors have a Full Speed QE/CPM2 USB controller, which support device mode with 4
drivers/usb/host/ehci-hcd.c +10 -1
@@ -634,7 +634,16 @@ static int ehci_run (struct usb_hcd *hcd)/* Wait until HC become operational */ ehci_readl (ehci, &ehci->regs->command);/* unblock posted writes */ msleep (5 ); - rc =ehci_handshake (ehci, &ehci->regs->status,STS_HALT ,0 ,100 *1000 ); + +/* For Aspeed, STS_HALT also depends on ASS/PSS status. +* Check CMD_RUN instead. +*/ +if (ehci->is_aspeed) + rc =ehci_handshake (ehci, &ehci->regs->command,CMD_RUN , +1 ,100 *1000 ); +else + rc =ehci_handshake (ehci, &ehci->regs->status,STS_HALT , +0 ,100 *1000 );up_write (&ehci_cf_port_reset_rwsem);
drivers/usb/host/ehci-platform.c +6 -0
@@ -286,6 +286,12 @@ static int ehci_platform_probe(struct platform_device *dev) "has-transaction-translator")) hcd->has_tt =1 ; +if (of_device_is_compatible (dev->dev.of_node, +"aspeed,ast2500-ehci" ) || +of_device_is_compatible (dev->dev.of_node, +"aspeed,ast2600-ehci" )) + ehci->is_aspeed =1 ; +if (soc_device_match (quirk_poll_match)) priv->quirk_poll = true;
drivers/usb/host/ehci.h +1 -0
@@ -218,6 +218,7 @@ struct ehci_hcd { /* one per controller */ unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */ unsigned need_oc_pp_cycle:1; /* MPC834X port power */ unsigned imx28_write_fix:1; /* For Freescale i.MX28 */ + unsigned is_aspeed:1;/* required for usb32 quirk */ #define OHCI_CTRL_HCFS (3 << 6)
drivers/usb/musb/musb_gadget.c +3 -1
@@ -1248,9 +1248,11 @@ static int musb_gadget_queue(struct usb_ep *ep, struct usb_request *req, status =musb_queue_resume_work (musb, musb_ep_restart_resume_work, request); -if (status <0 ) +if (status <0 ) {dev_err (musb->controller,"%s resume work: %i\n" , __func__, status); +list_del (&request->list); + } } unlock:
drivers/usb/storage/unusual_devs.h +10 -0
@@ -406,6 +406,16 @@ UNUSUAL_DEV( 0x04b8, 0x0602, 0x0110, 0x0110, "785EPX Storage", USB_SC_SCSI, USB_PR_BULK, NULL, US_FL_SINGLE_LUN), +/* +* Reported by James Buren <[email protected]> +* Virtual ISOs cannot be remounted if ejected while the device is locked +* Disable locking to mimic Windows behavior that bypasses the issue +*/ +UNUSUAL_DEV (0x04c5 ,0x2028 ,0x0001 ,0x0001 , +"iODD" , +"2531/2541" , + USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE), +/* * Not sure who reported this originally but * Pavel Machek <[email protected]> reported that the extra US_FL_SINGLE_LUN
fs/isofs/inode.c +2 -0
@@ -1328,6 +1328,8 @@ static int isofs_read_inode(struct inode *inode, int relocated) de = (struct iso_directory_record *) (bh->b_data + offset); de_len = *(unsigned char *) de; +if (de_len <sizeof (struct iso_directory_record )) + goto fail;if (offset + de_len > bufsize) {int frag1 = bufsize - offset;
kernel/printk/printk.c +8 -1
@@ -2193,8 +2193,15 @@ static int __init console_setup(char *str)char *s, *options, *brl_options =NULL ;int idx; -if (str[0 ] ==0 ) +/* +* console="" or console=null have been suggested as a way to +* disable console output. Use ttynull that has been created +* for exacly this purpose. +*/ +if (str[0 ] ==0 ||strcmp (str,"null" ) ==0 ) { +__add_preferred_console ("ttynull" ,0 ,NULL ,NULL );return 1 ; + }if (_braille_console_setup (&str, &brl_options))return 1 ;
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.159 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/kvm/ioapic.c | 2 arch/x86/kvm/ioapic.h | 4 drivers/android/binder.c | 14 +-- drivers/net/wireless/rsi/rsi_91x_usb.c | 2 drivers/staging/comedi/drivers/dt9812.c | 115 ++++++++++++++++++++-------- drivers/staging/comedi/drivers/ni_usb6501.c | 10 ++ drivers/staging/comedi/drivers/vmk80xx.c | 28 +++--- drivers/staging/media/ipu3/ipu3-css-fw.c | 7 - drivers/staging/media/ipu3/ipu3-css-fw.h | 2 drivers/staging/rtl8192u/r8192U_core.c | 18 ++-- drivers/staging/rtl8712/usb_ops_linux.c | 2 drivers/usb/gadget/udc/Kconfig | 1 drivers/usb/host/ehci-hcd.c | 11 ++ drivers/usb/host/ehci-platform.c | 6 + drivers/usb/host/ehci.h | 1 drivers/usb/musb/musb_gadget.c | 4 drivers/usb/storage/unusual_devs.h | 10 ++ fs/isofs/inode.c | 2 kernel/printk/printk.c | 9 +- 20 files changed, 178 insertions(+), 72 deletions(-)
Geert Uytterhoeven (1):
usb: gadget: Mark USB_FSL_QE broken on 64-bit
Greg Kroah-Hartman (1):
Linux 5.4.159
Gustavo A. R. Silva (1):
media: staging/intel-ipu3: css: Fix wrong size comparison imgu_css_fw_init
James Buren (1):
usb-storage: Add compatibility quirk flags for iODD 2531/2541
Jan Kara (1):
isofs: Fix out of bound access for corrupted isofs image
Johan Hovold (8):
comedi: dt9812: fix DMA buffers on stack
comedi: ni_usb6501: fix NULL-deref in command paths
comedi: vmk80xx: fix transfer-buffer overflows
comedi: vmk80xx: fix bulk-buffer overflow
comedi: vmk80xx: fix bulk and interrupt message timeouts
staging: r8712u: fix control-message timeout
staging: rtl8192u: fix control-message timeouts
rsi: fix control-message timeout
Juergen Gross (1):
Revert "x86/kvm: fix vcpu-id indexed array sizes"
Neal Liu (1):
usb: ehci: handshake CMD_RUN instead of STS_HALT
Petr Mladek (1):
printk/console: Allow to disable console output by using console="" or console=null
Todd Kjos (1):
binder: don't detect sender/target during buffer cleanup
Viraj Shah (1):
usb: musb: Balance list entry in musb_gadget_queue