OSDN Git Service

Merge android-4.4.191 (6da3fbc) into msm-4.4
authorSrinivasarao P <spathi@codeaurora.org>
Mon, 9 Sep 2019 05:36:27 +0000 (11:06 +0530)
committerSrinivasarao P <spathi@codeaurora.org>
Mon, 9 Sep 2019 06:00:20 +0000 (11:30 +0530)
* refs/heads/tmp-6da3fbc
  Linux 4.4.191
  x86/ptrace: fix up botched merge of spectrev1 fix
  mac80211: fix possible sta leak
  Revert "cfg80211: fix processing world regdomain when non modular"
  VMCI: Release resource if the work is already queued
  stm class: Fix a double free of stm_source_device
  mmc: core: Fix init of SD cards reporting an invalid VDD range
  mmc: sdhci-of-at91: add quirk for broken HS200
  uprobes/x86: Fix detection of 32-bit user mode
  ptrace,x86: Make user_64bit_mode() available to 32-bit builds
  USB: storage: ums-realtek: Whitelist auto-delink support
  USB: storage: ums-realtek: Update module parameter description for auto_delink_en
  usb: host: ohci: fix a race condition between shutdown and irq
  USB: cdc-wdm: fix race between write and disconnect due to flag abuse
  usb-storage: Add new JMS567 revision to unusual_devs
  x86/apic: Include the LDR when clearing out APIC registers
  x86/apic: Do not initialize LDR and DFR for bigsmp
  KVM: x86: Don't update RIP or do single-step on faulting emulation
  ALSA: seq: Fix potential concurrent access to the deleted pool
  tcp: make sure EPOLLOUT wont be missed
  ALSA: usb-audio: Fix an OOB bug in parse_audio_mixer_unit
  ALSA: usb-audio: Fix a stack buffer overflow bug in check_input_term
  tcp: fix tcp_rtx_queue_tail in case of empty retransmit queue
  watchdog: bcm2835_wdt: Fix module autoload
  tools: hv: fix KVP and VSS daemons exit code
  usb: host: fotg2: restart hcd after port reset
  usb: gadget: composite: Clear "suspended" on reset/disconnect
  dmaengine: ste_dma40: fix unneeded variable warning
  scsi: ufs: Fix NULL pointer dereference in ufshcd_config_vreg_hpm()
  x86/CPU/AMD: Clear RDRAND CPUID bit on AMD family 15h/16h
  x86/pm: Introduce quirk framework to save/restore extra MSR registers around suspend/resume
  Revert "perf test 6: Fix missing kvm module load for s390"
  netfilter: conntrack: Use consistent ct id hash calculation
  netfilter: ctnetlink: don't use conntrack/expect object addresses as id
  inet: switch IP ID generator to siphash
  siphash: implement HalfSipHash1-3 for hash tables
  siphash: add cryptographically secure PRF
  vhost: scsi: add weight support
  vhost_net: fix possible infinite loop
  vhost: introduce vhost_exceeds_weight()
  vhost_net: introduce vhost_exceeds_weight()
  vhost_net: use packet weight for rx handler, too
  vhost-net: set packet weight of tx polling to 2 * vq size
  net: arc_emac: fix koops caused by sk_buff free
  GFS2: don't set rgrp gl_object until it's inserted into rgrp tree
  cgroup: Disable IRQs while holding css_set_lock
  dm table: fix invalid memory accesses with too high sector number
  dm space map metadata: fix missing store of apply_bops() return value
  dm btree: fix order of block initialization in btree_split_beneath
  x86/boot: Fix boot regression caused by bootparam sanitizing
  x86/boot: Save fields explicitly, zero out everything else
  x86/apic: Handle missing global clockevent gracefully
  x86/retpoline: Don't clobber RFLAGS during CALL_NOSPEC on i386
  userfaultfd_release: always remove uffd flags and clear vm_userfaultfd_ctx
  Revert "dm bufio: fix deadlock with loop device"
  HID: wacom: correct misreported EKR ring values
  selftests: kvm: Adding config fragments
  libata: add SG safety checks in SFF pio transfers
  net: hisilicon: Fix dma_map_single failed on arm64
  net: hisilicon: fix hip04-xmit never return TX_BUSY
  net: hisilicon: make hip04_tx_reclaim non-reentrant
  net: cxgb3_main: Fix a resource leak in a error path in 'init_one()'
  NFSv4: Fix a potential sleep while atomic in nfs4_do_reclaim()
  can: peak_usb: force the string buffer NULL-terminated
  can: sja1000: force the string buffer NULL-terminated
  perf bench numa: Fix cpu0 binding
  isdn: hfcsusb: Fix mISDN driver crash caused by transfer buffer on the stack
  isdn: mISDN: hfcsusb: Fix possible null-pointer dereferences in start_isoc_chain()
  net: usb: qmi_wwan: Add the BroadMobi BM818 card
  ASoC: ti: davinci-mcasp: Correct slot_width posed constraint
  st_nci_hci_connectivity_event_received: null check the allocation
  st21nfca_connectivity_event_received: null check the allocation
  can: dev: call netif_carrier_off() in register_candev()
  bonding: Force slave speed check after link state recovery for 802.3ad
  netfilter: ebtables: fix a memory leak bug in compat
  MIPS: kernel: only use i8253 clocksource with periodic clockevent
  HID: Add 044f:b320 ThrustMaster, Inc. 2 in 1 DT
  ANDROID: sched: Disallow WALT with CFS bandwidth control
  ANDROID: fiq_debugger: remove
  ANDROID: Add a tracepoint for mapping inode to full path

Conflicts:
drivers/scsi/ufs/ufshcd.c
drivers/staging/android/fiq_debugger/fiq_debugger.c
sound/usb/mixer.c

Change-Id: I95d42e2ce37dd5d32e1737f701976079c43b7501
Signed-off-by: Srinivasarao P <spathi@codeaurora.org>
18 files changed:
1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
Makefile
drivers/hwtracing/stm/core.c
drivers/md/dm-table.c
drivers/mmc/core/sd.c
drivers/staging/android/Kconfig
drivers/staging/android/Makefile
drivers/usb/gadget/composite.c
drivers/usb/host/ohci-hcd.c
fs/namei.c
include/net/tcp.h
init/Kconfig
lib/Kconfig.debug
lib/Makefile
net/netfilter/nf_conntrack_core.c
net/wireless/reg.c
sound/usb/mixer.c

Simple merge
diff --cc MAINTAINERS
Simple merge
diff --cc Makefile
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/namei.c
Simple merge
Simple merge
diff --cc init/Kconfig
Simple merge
Simple merge
diff --cc lib/Makefile
Simple merge
Simple merge
Simple merge
@@@ -756,24 -754,6 +766,24 @@@ static int __check_input_term(struct mi
                                term->channels = d->bNrChannels;
                                term->chconfig = le32_to_cpu(d->bmChannelConfig);
                                term->name = d->iTerminal;
-                               err = check_input_term(state,
-                                                       d->bCSourceID, term);
 +                      } else { /* UAC_VERSION_3 */
 +                              struct uac3_input_terminal_descriptor *d = p1;
 +
++                              err = __check_input_term(state,
++                                                       d->bCSourceID, term);
 +                              if (err < 0)
 +                                      return err;
 +
 +                              term->id = id;
 +                              term->type = d->wTerminalType;
 +                              if (d->wClusterDescrID == CLUSTER_ID_MONO) {
 +                                      term->channels = NUM_CHANNELS_MONO;
 +                                      term->chconfig = BADD_CH_CONFIG_MONO;
 +                              } else {
 +                                      term->channels = NUM_CHANNELS_STEREO;
 +                                      term->chconfig = BADD_CH_CONFIG_STEREO;
 +                              }
 +                              term->name = d->wTerminalDescrStr;
                        }
                        return 0;
                case UAC_FEATURE_UNIT: {
                        return 0;
                }
                case UAC_SELECTOR_UNIT:
 -              case UAC2_CLOCK_SELECTOR: {
 -                      struct uac_selector_unit_descriptor *d = p1;
 -                      /* call recursively to retrieve the channel info */
 -                      err = __check_input_term(state, d->baSourceID[0], term);
 -                      if (err < 0)
 -                              return err;
 -                      term->type = d->bDescriptorSubtype << 16; /* virtual type */
 -                      term->id = id;
 -                      term->name = uac_selector_unit_iSelector(d);
 +              /* UAC3_MIXER_UNIT_V3 */
 +              case UAC2_CLOCK_SELECTOR:
 +              /* UAC3_CLOCK_SOURCE */ {
 +                      if (state->mixer->protocol == UAC_VERSION_3
 +                              && hdr[2] == UAC3_CLOCK_SOURCE) {
 +                              struct uac3_clock_source_descriptor *d = p1;
 +
 +                              term->type = d->bDescriptorSubtype << 16;
 +                              term->id = id;
 +                              term->name = d->wClockSourceStr;
 +                      } else if (state->mixer->protocol == UAC_VERSION_3
 +                                      && hdr[2] == UAC3_MIXER_UNIT_V3) {
 +                              struct uac3_mixer_unit_descriptor *d = p1;
 +
 +                              term->type = d->bDescriptorSubtype << 16;
 +                              if (d->wClusterDescrID == CLUSTER_ID_MONO) {
 +                                      term->channels = NUM_CHANNELS_MONO;
 +                                      term->chconfig = BADD_CH_CONFIG_MONO;
 +                              } else {
 +                                      term->channels = NUM_CHANNELS_STEREO;
 +                                      term->chconfig = BADD_CH_CONFIG_STEREO;
 +                              }
 +                              term->name = d->wMixerDescrStr;
 +                      } else {
 +                              struct uac_selector_unit_descriptor *d = p1;
 +                              /* call recursively to retrieve channel info */
-                               err = check_input_term(state,
-                                                       d->baSourceID[0], term);
++                              err = __check_input_term(state,
++                                                       d->baSourceID[0], term);
 +                              if (err < 0)
 +                                      return err;
 +                              /* virtual type */
 +                              term->type = d->bDescriptorSubtype << 16;
 +                              term->id = id;
 +                              term->name = uac_selector_unit_iSelector(d);
 +                      }
                        return 0;
                }
                case UAC1_PROCESSING_UNIT:
@@@ -1879,19 -1646,13 +1898,20 @@@ static int parse_audio_mixer_unit(struc
        int input_pins, num_ins, num_outs;
        int pin, ich, err;
  
 -      if (desc->bLength < 11 || !(input_pins = desc->bNrInPins) ||
 -          desc->bLength < sizeof(*desc) + desc->bNrInPins ||
 -          !(num_outs = uac_mixer_unit_bNrChannels(desc))) {
 -              usb_audio_err(state->chip,
 -                            "invalid MIXER UNIT descriptor %d\n",
 -                            unitid);
 -              return -EINVAL;
 +      if (state->mixer->protocol == UAC_VERSION_3) {
 +              input_pins = badd_baiof_mu_desc.bNrInPins;
 +              num_outs =
 +                 (badd_baiof_mu_desc.wClusterDescrID == CLUSTER_ID_MONO) ?
 +                  NUM_CHANNELS_MONO : NUM_CHANNELS_STEREO;
 +      } else {
 +              if (desc->bLength < 11 || !(input_pins = desc->bNrInPins) ||
-               !(num_outs = uac_mixer_unit_bNrChannels(desc))) {
++                  desc->bLength < sizeof(*desc) + desc->bNrInPins ||
++                  !(num_outs = uac_mixer_unit_bNrChannels(desc))) {
 +                      usb_audio_err(state->chip,
 +                                    "invalid MIXER UNIT descriptor %d\n",
 +                                    unitid);
 +                      return -EINVAL;
 +              }
        }
  
        num_ins = 0;