OSDN Git Service

Merge android-4.4-p.201 (ef0b39d) into msm-4.4
authorSrinivasarao P <spathi@codeaurora.org>
Fri, 15 Nov 2019 05:47:01 +0000 (11:17 +0530)
committerSrinivasarao P <spathi@codeaurora.org>
Wed, 20 Nov 2019 06:23:04 +0000 (11:53 +0530)
* refs/heads/tmp-ef0b39d
  commit e82b9b0727ff ("vhost: introduce vhost_exceeds_weight()")
  Linux 4.4.201
  drm/i915/cmdparser: Fix jump whitelist clearing
  drm/i915/gen8+: Add RC6 CTX corruption WA
  drm/i915: Lower RM timeout to avoid DSI hard hangs
  drm/i915/cmdparser: Ignore Length operands during command matching
  drm/i915/cmdparser: Add support for backward jumps
  drm/i915: Add gen9 BCS cmdparsing
  drm/i915: Allow parsing of unsized batches
  drm/i915: Support ro ppgtt mapped cmdparser shadow buffers
  drm/i915: Add support for mandatory cmdparsing
  drm/i915: Remove Master tables from cmdparser
  drm/i915: Disable Secure Batches for gen6+
  drm/i915: Rename gen7 cmdparser tables
  drm/i915/gtt: Disable read-only support under GVT
  drm/i915/gtt: Read-only pages for insert_entries on bdw+
  drm/i915/gtt: Add read only pages to gen8_pte_encode
  net: prevent load/store tearing on sk->sk_stamp
  cgroup,writeback: don't switch wbs immediately on dead wbs if the memcg is dead
  mm/filemap.c: don't initiate writeback if mapping has no dirty pages
  can: flexcan: disable completely the ECC mechanism
  e1000: fix memory leaks
  igb: Fix constant media auto sense switching when no cable is connected
  NFSv4: Don't allow a cached open with a revoked delegation
  net: hisilicon: Fix "Trying to free already-free IRQ"
  scsi: qla2xxx: stop timer in shutdown path
  USB: Skip endpoints with 0 maxpacket length
  perf/x86/amd/ibs: Fix reading of the IBS OpData register and thus precise RIP validity
  usb: gadget: configfs: fix concurrent issue between composite APIs
  usb: gadget: composite: Fix possible double free memory bug
  usb: gadget: udc: atmel: Fix interrupt storm in FIFO mode.
  usb: fsl: Check memory resource before releasing it
  bonding: fix unexpected IFF_BONDING bit unset
  ipvs: move old_secure_tcp into struct netns_ipvs
  scsi: lpfc: Honor module parameter lpfc_use_adisc
  scsi: qla2xxx: fixup incorrect usage of host_byte
  PCI: tegra: Enable Relaxed Ordering only for Tegra20 & Tegra30
  configfs: fix a deadlock in configfs_symlink()
  drivers: usb: usbip: Add missing break statement to switch
  can: peak_usb: fix slab info leak
  can: gs_usb: gs_can_open(): prevent memory leak
  can: peak_usb: fix a potential out-of-sync while decoding packets
  can: c_can: c_can_poll(): only read status register after status IRQ
  can: usb_8dev: fix use-after-free on disconnect
  netfilter: ipset: Fix an error code in ip_set_sockfn_get()
  netfilter: nf_tables: Align nft_expr private data to 64-bit
  iio: imu: adis16480: make sure provided frequency is positive
  ceph: fix use-after-free in __ceph_remove_cap()
  drm/radeon: fix si_enable_smc_cac() failed issue
  perf tools: Fix time sorting
  dump_stack: avoid the livelock of the dump_lock
  mm, vmstat: hide /proc/pagetypeinfo from normal users
  ALSA: hda/ca0132 - Fix possible workqueue stall
  ALSA: bebob: fix to detect configured source of sampling clock for Focusrite Saffire Pro i/o series
  nfc: netlink: fix double device reference drop
  qede: fix NULL pointer deref in __qede_remove()
  NFC: st21nfca: fix double free
  NFC: fdp: fix incorrect free object
  net: fix data-race in neigh_event_send()
  CDC-NCM: handle incomplete transfer of MTU

Fixed build error of unused functions like configfs_composite_setup()

Spinlock is not initialized in commit
'usb: gadget: configfs: fix concurrent issue between composite APIs'
due to this device is crashing with spinlock bad magic , fixed it by initialyzing spinlock.

Change-Id: I60ef410910744b0b9e33b2968f1cfbacb7fea446
Signed-off-by: Srinivasarao P <spathi@codeaurora.org>
1  2 
Makefile
drivers/gpu/drm/i915/i915_gem_execbuffer.c
drivers/usb/core/config.c
drivers/usb/gadget/configfs.c
include/net/sock.h
mm/filemap.c
mm/vmstat.c
net/netfilter/ipvs/ip_vs_ctl.c

diff --cc Makefile
Simple merge
Simple merge
@@@ -87,9 -85,10 +87,11 @@@ struct gadget_info 
        struct usb_composite_driver composite;
        struct usb_composite_dev cdev;
        bool use_os_desc;
 +      bool unbinding;
        char b_vendor_code;
        char qw_sign[OS_STRING_QW_SIGN_LEN];
+       spinlock_t spinlock;
+       bool unbind;
  #ifdef CONFIG_USB_CONFIGFS_UEVENT
        bool connected;
        bool sw_connected;
@@@ -1486,8 -1481,101 +1493,103 @@@ static void configfs_composite_unbind(s
        purge_configs_funcs(gi);
        composite_dev_cleanup(cdev);
        usb_ep_autoconfig_reset(cdev->gadget);
+       spin_lock_irqsave(&gi->spinlock, flags);
        cdev->gadget = NULL;
        set_gadget_data(gadget, NULL);
+       spin_unlock_irqrestore(&gi->spinlock, flags);
+ }
++#if !IS_ENABLED(CONFIG_USB_CONFIGFS_UEVENT)
+ static int configfs_composite_setup(struct usb_gadget *gadget,
+               const struct usb_ctrlrequest *ctrl)
+ {
+       struct usb_composite_dev *cdev;
+       struct gadget_info *gi;
+       unsigned long flags;
+       int ret;
+       cdev = get_gadget_data(gadget);
+       if (!cdev)
+               return 0;
+       gi = container_of(cdev, struct gadget_info, cdev);
+       spin_lock_irqsave(&gi->spinlock, flags);
+       cdev = get_gadget_data(gadget);
+       if (!cdev || gi->unbind) {
+               spin_unlock_irqrestore(&gi->spinlock, flags);
+               return 0;
+       }
+       ret = composite_setup(gadget, ctrl);
+       spin_unlock_irqrestore(&gi->spinlock, flags);
+       return ret;
+ }
+ static void configfs_composite_disconnect(struct usb_gadget *gadget)
+ {
+       struct usb_composite_dev *cdev;
+       struct gadget_info *gi;
+       unsigned long flags;
+       cdev = get_gadget_data(gadget);
+       if (!cdev)
+               return;
+       gi = container_of(cdev, struct gadget_info, cdev);
+       spin_lock_irqsave(&gi->spinlock, flags);
+       cdev = get_gadget_data(gadget);
+       if (!cdev || gi->unbind) {
+               spin_unlock_irqrestore(&gi->spinlock, flags);
+               return;
+       }
+       composite_disconnect(gadget);
+       spin_unlock_irqrestore(&gi->spinlock, flags);
+ }
++#endif
+ static void configfs_composite_suspend(struct usb_gadget *gadget)
+ {
+       struct usb_composite_dev *cdev;
+       struct gadget_info *gi;
+       unsigned long flags;
+       cdev = get_gadget_data(gadget);
+       if (!cdev)
+               return;
+       gi = container_of(cdev, struct gadget_info, cdev);
+       spin_lock_irqsave(&gi->spinlock, flags);
+       cdev = get_gadget_data(gadget);
+       if (!cdev || gi->unbind) {
+               spin_unlock_irqrestore(&gi->spinlock, flags);
+               return;
+       }
+       composite_suspend(gadget);
+       spin_unlock_irqrestore(&gi->spinlock, flags);
+ }
+ static void configfs_composite_resume(struct usb_gadget *gadget)
+ {
+       struct usb_composite_dev *cdev;
+       struct gadget_info *gi;
+       unsigned long flags;
+       cdev = get_gadget_data(gadget);
+       if (!cdev)
+               return;
+       gi = container_of(cdev, struct gadget_info, cdev);
+       spin_lock_irqsave(&gi->spinlock, flags);
+       cdev = get_gadget_data(gadget);
+       if (!cdev || gi->unbind) {
+               spin_unlock_irqrestore(&gi->spinlock, flags);
+               return;
+       }
+       composite_resume(gadget);
+       spin_unlock_irqrestore(&gi->spinlock, flags);
  }
  
  #ifdef CONFIG_USB_CONFIGFS_UEVENT
@@@ -1714,6 -1789,6 +1816,7 @@@ static struct config_group *gadgets_mak
        mutex_init(&gi->lock);
        INIT_LIST_HEAD(&gi->string_list);
        INIT_LIST_HEAD(&gi->available_func);
++      spin_lock_init(&gi->spinlock);
  
        composite_init_dev(&gi->cdev);
        gi->cdev.desc.bLength = USB_DT_DEVICE_SIZE;
Simple merge
diff --cc mm/filemap.c
Simple merge
diff --cc mm/vmstat.c
Simple merge
Simple merge