{"push_id":1199133463,"size":1000,"distinct_size":11,"ref":"refs/heads/scriptsgdb/devel","head":"ef8837030f28bbf3f2a6ce6616e57dc13715060c","before":"705a555deba5a638a7ea49fba0277af85646e38a","commits":[{"sha":"cfaff0e515b544fa0a9cdc58a975cc629ff3bc17","author":{"name":"Andy Shevchenko","email":"81dea222a65099eed47626c53d6f56bdfbcbb7bf@linux.intel.com"},"message":"lib/uuid: add a test module\n\nIt appears that somehow I missed a test of the latest UUID rework which\nlanded in the kernel.  Present a small test module to avoid such cases\nin the future.\n\nSigned-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/cfaff0e515b544fa0a9cdc58a975cc629ff3bc17"},{"sha":"bc9dc9d5eec908806f1b15c9ec2253d44dcf7835","author":{"name":"Bjørn Mork","email":"73004647096653cb035375f893ae959ac7bd4f38@mork.no"},"message":"lib/uuid.c: use correct offset in uuid parser\n\nUse '+ 0' and '+ 1' as offsets, like they were intended, instead of\nadding to the result.\n\nFixes: 2b1b0d66704a (\"lib/uuid.c: introduce a few more generic helpers\")\nSigned-off-by: Bjørn Mork <bjorn@mork.no>\nSigned-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/bc9dc9d5eec908806f1b15c9ec2253d44dcf7835"},{"sha":"852f42a69b93dc71507adedeed876d57b8c2c2fa","author":{"name":"Linus Torvalds","email":"ead7104581934751970e9decb2db5deb20a9e407@linux-foundation.org"},"message":"Merge branch 'uuid' (lib/uuid fixes from Andy)\n\nMerge lib/uuid fixes from Andy Shevchenko.\n\n* emailed patches from Andy Shevchenko <andriy.shevchenko@linux.intel.com>:\n  lib/uuid.c: use correct offset in uuid parser\n  lib/uuid: add a test module","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/852f42a69b93dc71507adedeed876d57b8c2c2fa"},{"sha":"2999241daa8d77947f108dfbde35c268cd7bd709","author":{"name":"Filipe Manana","email":"396addc00218539530419b15da697a581cb02fca@suse.com"},"message":"Btrfs: fix race between device replace and discard\n\nWhile we are finishing a device replace operation, we can make a discard\noperation (fs mounted with -o discard) do an invalid memory access like\nthe one reported by the following trace:\n\n[ 3206.384654] general protection fault: 0000 [#1] PREEMPT SMP\n[ 3206.387520] Modules linked in: dm_mod btrfs crc32c_generic xor raid6_pq acpi_cpufreq tpm_tis psmouse tpm ppdev sg parport_pc evdev i2c_piix4 parport\nprocessor serio_raw i2c_core pcspkr button loop autofs4 ext4 crc16 jbd2 mbcache sr_mod cdrom ata_generic sd_mod virtio_scsi ata_piix libata virtio_pci\nvirtio_ring scsi_mod e1000 virtio floppy [last unloaded: btrfs]\n[ 3206.388595] CPU: 14 PID: 29194 Comm: fsstress Not tainted 4.6.0-rc7-btrfs-next-29+ #1\n[ 3206.388595] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014\n[ 3206.388595] task: ffff88017ace0100 ti: ffff880171b98000 task.ti: ffff880171b98000\n[ 3206.388595] RIP: 0010:[<ffffffff8124d233>]  [<ffffffff8124d233>] blkdev_issue_discard+0x5c/0x2a7\n[ 3206.388595] RSP: 0018:ffff880171b9bb80  EFLAGS: 00010246\n[ 3206.388595] RAX: ffff880171b9bc28 RBX: 000000000090d000 RCX: 0000000000000000\n[ 3206.388595] RDX: ffffffff82fa1b48 RSI: ffffffff8179f46c RDI: ffffffff82fa1b48\n[ 3206.388595] RBP: ffff880171b9bcc0 R08: 0000000000000000 R09: 0000000000000001\n[ 3206.388595] R10: ffff880171b9bce0 R11: 000000000090f000 R12: ffff880171b9bbe8\n[ 3206.388595] R13: 0000000000000010 R14: 0000000000004868 R15: 6b6b6b6b6b6b6b6b\n[ 3206.388595] FS:  00007f6182e4e700(0000) GS:ffff88023fdc0000(0000) knlGS:0000000000000000\n[ 3206.388595] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n[ 3206.388595] CR2: 00007f617c2bbb18 CR3: 000000017ad9c000 CR4: 00000000000006e0\n[ 3206.388595] Stack:\n[ 3206.388595]  0000000000004878 0000000000000000 0000000002400040 0000000000000000\n[ 3206.388595]  0000000000000000 ffff880171b9bbe8 ffff880171b9bbb0 ffff880171b9bbb0\n[ 3206.388595]  ffff880171b9bbc0 ffff880171b9bbc0 ffff880171b9bbd0 ffff880171b9bbd0\n[ 3206.388595] Call Trace:\n[ 3206.388595]  [<ffffffffa042899e>] btrfs_issue_discard+0x12f/0x143 [btrfs]\n[ 3206.388595]  [<ffffffffa042899e>] ? btrfs_issue_discard+0x12f/0x143 [btrfs]\n[ 3206.388595]  [<ffffffffa042e862>] btrfs_discard_extent+0x87/0xde [btrfs]\n[ 3206.388595]  [<ffffffffa04303b5>] btrfs_finish_extent_commit+0xb2/0x1df [btrfs]\n[ 3206.388595]  [<ffffffff8149c246>] ? __mutex_unlock_slowpath+0x150/0x15b\n[ 3206.388595]  [<ffffffffa04464c4>] btrfs_commit_transaction+0x7fc/0x980 [btrfs]\n[ 3206.388595]  [<ffffffff8149c246>] ? __mutex_unlock_slowpath+0x150/0x15b\n[ 3206.388595]  [<ffffffffa0459af6>] btrfs_sync_file+0x38f/0x428 [btrfs]\n[ 3206.388595]  [<ffffffff811a8292>] vfs_fsync_range+0x8c/0x9e\n[ 3206.388595]  [<ffffffff811a82c0>] vfs_fsync+0x1c/0x1e\n[ 3206.388595]  [<ffffffff811a8417>] do_fsync+0x31/0x4a\n[ 3206.388595]  [<ffffffff811a8637>] SyS_fsync+0x10/0x14\n[ 3206.388595]  [<ffffffff8149e025>] entry_SYSCALL_64_fastpath+0x18/0xa8\n[ 3206.388595]  [<ffffffff81100c6b>] ? time_hardirqs_off+0x9/0x14\n[ 3206.388595]  [<ffffffff8108e87d>] ? trace_hardirqs_off_caller+0x1f/0xaa\n\nThis happens because when we call btrfs_map_block() from\nbtrfs_discard_extent() to get a btrfs_bio structure, the device replace\noperation has not finished yet, but before we use the device of one of the\nstripes from the returned btrfs_bio structure, the device object is freed.\n\nThis is illustrated by the following diagram.\n\n            CPU 1                                                  CPU 2\n\n btrfs_dev_replace_start()\n\n (...)\n\n btrfs_dev_replace_finishing()\n\n   btrfs_start_transaction()\n   btrfs_commit_transaction()\n\n   (...)\n\n                                                            btrfs_sync_file()\n                                                              btrfs_start_transaction()\n\n                                                              (...)\n\n                                                              btrfs_commit_transaction()\n                                                                btrfs_finish_extent_commit()\n                                                                  btrfs_discard_extent()\n                                                                    btrfs_map_block()\n                                                                      --> returns a struct btrfs_bio\n                                                                          with a stripe that has a\n                                                                          device field pointing to\n                                                                          source device of the replace\n                                                                          operation (the device that\n                                                                          is being replaced)\n\n   mutex_lock(&uuid_mutex)\n   mutex_lock(&fs_info->fs_devices->device_list_mutex)\n   mutex_lock(&fs_info->chunk_mutex)\n\n   btrfs_dev_replace_update_device_in_mapping_tree()\n     --> iterates the mapping tree and for each\n         extent map that has a stripe pointing to\n         the source device, it updates the stripe\n         to point to the target device instead\n\n   btrfs_rm_dev_replace_blocked()\n     --> waits for fs_info->bio_counter to go down to 0\n\n   btrfs_rm_dev_replace_remove_srcdev()\n     --> removes source device from the list of devices\n\n   mutex_unlock(&fs_info->chunk_mutex)\n   mutex_unlock(&fs_info->fs_devices->device_list_mutex)\n   mutex_unlock(&uuid_mutex)\n\n   btrfs_rm_dev_replace_free_srcdev()\n     --> frees the source device\n\n                                                                    --> iterates over all stripes\n                                                                        of the returned struct\n                                                                        btrfs_bio\n                                                                    --> for each stripe it\n                                                                        dereferences its device\n                                                                        pointer\n                                                                        --> it ends up finding a\n                                                                            pointer to the device\n                                                                            used as the source\n                                                                            device for the replace\n                                                                            operation and that was\n                                                                            already freed\n\nSo fix this by surrounding the call to btrfs_map_block(), and the code\nthat uses the returned struct btrfs_bio, with calls to\nbtrfs_bio_counter_inc_blocked() and btrfs_bio_counter_dec(), so that\nthe finishing phase of the device replace operation blocks until the\nthe bio counter decreases to zero before it frees the source device.\nThis is the same approach we do at btrfs_map_bio() for example.\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Josef Bacik <jbacik@fb.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/2999241daa8d77947f108dfbde35c268cd7bd709"},{"sha":"b5de8d0df80fa87f1f97fbcc4bbc8cad0a018802","author":{"name":"Filipe Manana","email":"396addc00218539530419b15da697a581cb02fca@suse.com"},"message":"Btrfs: fix race between device replace and read repair\n\nWhile we are finishing a device replace operation we can have a concurrent\ntask trying to do a read repair operation, in which case it will call\nbtrfs_map_block() to get a struct btrfs_bio which can have a stripe that\npoints to the source device of the device replace operation. This allows\nfor the read repair task to dereference the stripe's device pointer after\nthe device replace operation has freed the source device, resulting in\nan invalid memory access. This is similar to the problem solved by my\nprevious patch in the same series and named \"Btrfs: fix race between\ndevice replace and discard\".\n\nSo fix this by surrounding the call to btrfs_map_block() and the code\nthat uses the returned struct btrfs_bio with calls to\nbtrfs_bio_counter_inc_blocked() and btrfs_bio_counter_dec(), giving the\nproper serialization with the finishing phase of the device replace\noperation.\n\nSigned-off-by: Filipe Manana <fdmanana@suse.com>\nReviewed-by: Josef Bacik <jbacik@fb.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/b5de8d0df80fa87f1f97fbcc4bbc8cad0a018802"},{"sha":"2639d6b9be19e029869158a6b8cbc5d253cd7bbc","author":{"name":"Arnd Bergmann","email":"72a0f6d3b182607e6d5c44b93e1abb7b23ee18f3@arndb.de"},"message":"drm/omapdrm: include pinctrl/consumer.h where needed\n\nIn some configurations, we can build the OMAP dss driver without\nimplictly including the pinctrl consumer definitions, causing\na build error:\n\ngpu/drm/omapdrm/dss/dss.c: In function 'dss_runtime_suspend':\ngpu/drm/omapdrm/dss/dss.c:1268:2: error: implicit declaration of function 'pinctrl_pm_select_sleep_state' [-Werror=implicit-function-declaration]\n\nThis adds an explicit #include.\n\nSigned-off-by: Arnd Bergmann <arnd@arndb.de>\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/2639d6b9be19e029869158a6b8cbc5d253cd7bbc"},{"sha":"d9e32ecda41bb6b6301fd2a0945003bb8f4e2ba1","author":{"name":"Tomi Valkeinen","email":"0cd47e5423ab131fb27d1c4c18a69822c7bc0c6b@ti.com"},"message":"drm/omap: Fix missing includes\n\nWith certain kernel config options many omapdrm files fail to compile\ndue to missing include of linux/gpio/consumer.h and linux/of.h.\n\nThis patch adds those includes.\n\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>\nReported-by: Dan Murphy <dmurphy@ti.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/d9e32ecda41bb6b6301fd2a0945003bb8f4e2ba1"},{"sha":"91cd220aadc88dff6650127e7b19a85569ef8b7c","author":{"name":"Tomi Valkeinen","email":"0cd47e5423ab131fb27d1c4c18a69822c7bc0c6b@ti.com"},"message":"drm/omap: fix OMAP4 hdmi_core_powerdown_disable()\n\nhdmi_core_powerdown_disable() is supposed to disable HDMI core's\npower-down mode. However, the function sets the power-down bit to 0,\nwhich means \"enable power-down\".\n\nThis hasn't caused any issues as the PD seems to affect only interrupts\nfrom HDMI core, and none of those interrupts are used at the moment. CEC\nfunctionality requires core interrupts, and the PD mode needs to be\nfixed.\n\nThis patch fixes hdmi_core_powerdown_disable() to actually disable the\nPD mode.\n\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>\nReported-by: Hans Verkuil <hverkuil@xs4all.nl>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/91cd220aadc88dff6650127e7b19a85569ef8b7c"},{"sha":"08f707ac3eb1fa86c43c705f9f78c1e40c49aba1","author":{"name":"Jim Lodes","email":"202117fd684b93a16ec01b15171a1303ae26e832@garmin.com"},"message":"OMAPDSS: HDMI5: Fix AVI infoframe\n\nThe AVI infoframe R0-R3 in the 2nd data byte represents the\nActive Format Aspect Ratio. It is four bits long not two bits.\nThis fixes that mask used to extract the bits before writing the\nbits to the hardware registers.\n\nSigned-off-by: Jim Lodes <jim.lodes@garmin.com>\nSigned-off-by: J.D. Schroeder <jay.schroeder@garmin.com>\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/08f707ac3eb1fa86c43c705f9f78c1e40c49aba1"},{"sha":"4bafcbc77fb0b26b0052dbd577ccc888a63e6404","author":{"name":"Jim Lodes","email":"202117fd684b93a16ec01b15171a1303ae26e832@garmin.com"},"message":"OMAPDSS: HDMI5: Change DDC timings\n\nThe DDC scl high and low times were set to the minimum values\nfrom the i2c specification, but the i2c specification takes into\naccount the rise time and fall time to calculate the frequency.\nTo pass HDMI certification DDC can not exceed 100kHz therefore in\na system where the rise times and fall times are negligible the high\nand low times for scl need to be 10us.\n\nSigned-off-by: Jim Lodes <jim.lodes@garmin.com>\nSigned-off-by: J.D. Schroeder <jay.schroeder@garmin.com>\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/4bafcbc77fb0b26b0052dbd577ccc888a63e6404"},{"sha":"973999aa0140481e590e791c320009d25a88d377","author":{"name":"Peter Ujfalusi","email":"a66d66a7cf9c40d6c50e4d2b4388377d4aa6474e@ti.com"},"message":"drm/omap: Remove regulator API abuse\n\nregulator_can_change_voltage() is deprecated and it's use is not necessary\nas commit:\n6a0028b3dd67b regulator: Deprecate regulator_can_change_voltage()\ndescribers it clearly.\n\nAlso, regulator_set_voltage() is misused in the driver, as it is\nsupposed to be used only in cases where the regulator voltage needs to\nbe changed dynamically at runtime. In DSS's case, we always want a fixed\nvoltage, set in the .dts files.\n\nSigned-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/973999aa0140481e590e791c320009d25a88d377"},{"sha":"62cb0751c87cb2d0af0629d68cfb12d67f39badf","author":{"name":"Peter Ujfalusi","email":"a66d66a7cf9c40d6c50e4d2b4388377d4aa6474e@ti.com"},"message":"Revert \"drm/omap: no need to select OMAP2_DSS\"\n\nThis reverts commit 1c278e5e3718d15475ec08ee2135f37a6b13361c.\n\nIf DRM_OMAP does not select OMAP2_DSS it is possible to build a kernel with\nDRM_OMAP only and not selecting OMAP2_DSS. Since omapdrm depends on\nOMAP2_DSS this will result on broken kernel build.\n\nSigned-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/62cb0751c87cb2d0af0629d68cfb12d67f39badf"},{"sha":"2d8024534a9ae8426ed249f317106b3404594c2d","author":{"name":"Arnd Bergmann","email":"72a0f6d3b182607e6d5c44b93e1abb7b23ee18f3@arndb.de"},"message":"drm/omap: include linux/seq_file.h where needed\n\nThe omapdrm driver relies on this header to be included\nimplicitly, but this does not always work, and I get\nthis error in randconfig builds:\n\ngpu/drm/omapdrm/dss/hdmi_phy.c: In function 'hdmi_phy_dump':\ngpu/drm/omapdrm/dss/hdmi_phy.c:34:2: error: implicit declaration of function 'seq_printf' [-Werror=implicit-function-declaration]\ngpu/drm/omapdrm/dss/hdmi_wp.c: In function 'hdmi_wp_dump':\ngpu/drm/omapdrm/dss/hdmi_wp.c:26:2: error: implicit declaration of function 'seq_printf' [-Werror=implicit-function-declaration]\ngpu/drm/omapdrm/dss/hdmi_pll.c: In function 'hdmi_pll_dump':\ngpu/drm/omapdrm/dss/hdmi_pll.c:30:2: error: implicit declaration of function 'seq_printf' [-Werror=implicit-function-declaration]\n\nThis adds the #include statements in all files that have\na seq_printf statement.\n\nSigned-off-by: Arnd Bergmann <arnd@arndb.de>\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/2d8024534a9ae8426ed249f317106b3404594c2d"},{"sha":"d0196c8d5d3057c5c21a82f3d0113ca8e501033b","author":{"name":"Arnd Bergmann","email":"72a0f6d3b182607e6d5c44b93e1abb7b23ee18f3@arndb.de"},"message":"drm/omap: include gpio/consumer.h where needed\n\nA lot of the display drivers for OMAP use the gpio descriptor functions\nthat are only available in linux/gpio.h if GPIOLIB is enabled and\notherwise produce a build error:\n\ndrivers/gpu/drm/omapdrm/displays/encoder-opa362.c: In function 'opa362_enable':\ndrivers/gpu/drm/omapdrm/displays/encoder-opa362.c:101:3: error: implicit declaration of function 'gpiod_set_value_cansleep' [-Werror=implicit-function-declaration]\ndrivers/gpu/drm/omapdrm/displays/panel-dpi.c: In function 'panel_dpi_probe_pdata':\ndrivers/gpu/drm/omapdrm/displays/panel-dpi.c:189:23: error: implicit declaration of function 'gpio_to_desc' [-Werror=implicit-function-declaration]\ndrivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c: In function 'sharp_ls_enable':\ndrivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c:120:3: error: implicit declaration of function 'gpiod_set_value_cansleep' [-Werror=implicit-function-declaration]\n\nThis replaces the existing linux/gpio.h with linux/gpio/consumer.h\nwhere needed. In case of panel-lgphilips-lb035q02.c however, we\nalso have to include linux/gpio.h to get the definition of gpio_is_valid\nand gpio_set_value_cansleep that are used for the non-DT case.\n\nSigned-off-by: Arnd Bergmann <arnd@arndb.de>\n[tomi.valkeinen@ti.com: resolved conflicts]\nSigned-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/d0196c8d5d3057c5c21a82f3d0113ca8e501033b"},{"sha":"d140b9bfcad9e53f1da67ad09dd5092b44d55c7b","author":{"name":"Vineet Gupta","email":"a7e6bac69589bd9c485fe09b6cb3c1c86c8546ec@synopsys.com"},"message":"ARC: don't enable DISCONTIGMEM unconditionally\n\nSigned-off-by: Vineet Gupta <vgupta@synopsys.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/d140b9bfcad9e53f1da67ad09dd5092b44d55c7b"},{"sha":"f1bddbb3de60872acc2446eee97dbeb0a6d57acb","author":{"name":"Krzysztof Opasiak","email":"1be28433132fa26ab9a845674fa67f2c0fdfd2d1@samsung.com"},"message":"usb: gadget: Fix binding to UDC via configfs interface\n\nBy default user could store only valid UDC name in configfs UDC\nattr by doing:\n\necho $UDC_NAME > UDC\n\nCommit (855ed04 \"usb: gadget: udc-core: independent registration of\ngadgets and gadget drivers\") broke this behavior and allowed to store\nany arbitrary string in UDC file and udc core was waiting for such\ncontroller to appear.\n\necho \"any arbitrary string here\" > UDC\n\nThis commit fix this by adding a flag which prevents configfs\ngadget from being added to list of pending drivers if UDC with\ngiven name has not been found.\n\nSigned-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>\nSigned-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/f1bddbb3de60872acc2446eee97dbeb0a6d57acb"},{"sha":"4879efb34f7d49235fac334d76d9c6a77a021413","author":{"name":"Steinar H. Gunderson","email":"8091de04a8caee4ce4476871c1b97586544bc18e@google.com"},"message":"usb: dwc3: exynos: Fix deferred probing storm.\n\ndwc3-exynos has two problems during init if the regulators are slow\nto come up (for instance if the I2C bus driver is not on the initramfs)\nand return probe deferral. First, every time this happens, the driver\nleaks the USB phys created; they need to be deallocated on error.\n\nSecond, since the phy devices are created before the regulators fail,\nthis means that there's a new device to re-trigger deferred probing,\nwhich causes it to essentially go into a busy loop of re-probing the\ndevice until the regulators come up.\n\nMove the phy creation to after the regulators have succeeded, and also\nfix cleanup on failure. On my ODROID XU4 system (with Debian's initramfs\nwhich doesn't contain the I2C driver), this reduces the number of probe\nattempts (for each of the two controllers) from more than 2000 to eight.\n\nSigned-off-by: Steinar H. Gunderson <sesse@google.com>\nReviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>\nReviewed-by: Vivek Gautam <gautam.vivek@samsung.com>\nFixes: d720f057fda4 (\"usb: dwc3: exynos: add nop transceiver support\")\nCc: <stable@vger.kernel.org>\nSigned-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/4879efb34f7d49235fac334d76d9c6a77a021413"},{"sha":"0015f9156092d07b3ec06d37d014328419d5832e","author":{"name":"Dan Carpenter","email":"60b2bf2bc0bec4ca4a4b046ca7ef9255248abff8@oracle.com"},"message":"usb: f_fs: off by one bug in _ffs_func_bind()\n\nThis loop is supposed to set all the .num[] values to -1 but it's off by\none so it skips the first element and sets one element past the end of\nthe array.\n\nI've cleaned up the loop a little as well.\n\nFixes: ddf8abd25994 ('USB: f_fs: the FunctionFS driver')\nAcked-by: Michal Nazarewicz <mina86@mina86.com>\nSigned-off-by: Dan Carpenter <dan.carpenter@oracle.com>\nSigned-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/0015f9156092d07b3ec06d37d014328419d5832e"},{"sha":"d246dcb2331c5783743720e6510892eb1d2801d9","author":{"name":"Bin Liu","email":"a72059919660980379dd6f250450bdd11bed73d1@ti.com"},"message":"usb: gadget: fix spinlock dead lock in gadgetfs\n\n[   40.467381] =============================================\n[   40.473013] [ INFO: possible recursive locking detected ]\n[   40.478651] 4.6.0-08691-g7f3db9a #37 Not tainted\n[   40.483466] ---------------------------------------------\n[   40.489098] usb/733 is trying to acquire lock:\n[   40.493734]  (&(&dev->lock)->rlock){-.....}, at: [<bf129288>] ep0_complete+0x18/0xdc [gadgetfs]\n[   40.502882]\n[   40.502882] but task is already holding lock:\n[   40.508967]  (&(&dev->lock)->rlock){-.....}, at: [<bf12a420>] ep0_read+0x20/0x5e0 [gadgetfs]\n[   40.517811]\n[   40.517811] other info that might help us debug this:\n[   40.524623]  Possible unsafe locking scenario:\n[   40.524623]\n[   40.530798]        CPU0\n[   40.533346]        ----\n[   40.535894]   lock(&(&dev->lock)->rlock);\n[   40.540088]   lock(&(&dev->lock)->rlock);\n[   40.544284]\n[   40.544284]  *** DEADLOCK ***\n[   40.544284]\n[   40.550461]  May be due to missing lock nesting notation\n[   40.550461]\n[   40.557544] 2 locks held by usb/733:\n[   40.561271]  #0:  (&f->f_pos_lock){+.+.+.}, at: [<c02a6114>] __fdget_pos+0x40/0x48\n[   40.569219]  #1:  (&(&dev->lock)->rlock){-.....}, at: [<bf12a420>] ep0_read+0x20/0x5e0 [gadgetfs]\n[   40.578523]\n[   40.578523] stack backtrace:\n[   40.583075] CPU: 0 PID: 733 Comm: usb Not tainted 4.6.0-08691-g7f3db9a #37\n[   40.590246] Hardware name: Generic AM33XX (Flattened Device Tree)\n[   40.596625] [<c010ffbc>] (unwind_backtrace) from [<c010c1bc>] (show_stack+0x10/0x14)\n[   40.604718] [<c010c1bc>] (show_stack) from [<c04207fc>] (dump_stack+0xb0/0xe4)\n[   40.612267] [<c04207fc>] (dump_stack) from [<c01886ec>] (__lock_acquire+0xf68/0x1994)\n[   40.620440] [<c01886ec>] (__lock_acquire) from [<c0189528>] (lock_acquire+0xd8/0x238)\n[   40.628621] [<c0189528>] (lock_acquire) from [<c06ad6b4>] (_raw_spin_lock_irqsave+0x38/0x4c)\n[   40.637440] [<c06ad6b4>] (_raw_spin_lock_irqsave) from [<bf129288>] (ep0_complete+0x18/0xdc [gadgetfs])\n[   40.647339] [<bf129288>] (ep0_complete [gadgetfs]) from [<bf10a728>] (musb_g_giveback+0x118/0x1b0 [musb_hdrc])\n[   40.657842] [<bf10a728>] (musb_g_giveback [musb_hdrc]) from [<bf108768>] (musb_g_ep0_queue+0x16c/0x188 [musb_hdrc])\n[   40.668772] [<bf108768>] (musb_g_ep0_queue [musb_hdrc]) from [<bf12a944>] (ep0_read+0x544/0x5e0 [gadgetfs])\n[   40.678963] [<bf12a944>] (ep0_read [gadgetfs]) from [<c0284470>] (__vfs_read+0x20/0x110)\n[   40.687414] [<c0284470>] (__vfs_read) from [<c0285324>] (vfs_read+0x88/0x114)\n[   40.694864] [<c0285324>] (vfs_read) from [<c0286150>] (SyS_read+0x44/0x9c)\n[   40.702051] [<c0286150>] (SyS_read) from [<c0107820>] (ret_fast_syscall+0x0/0x1c)\n\nThis is caused by the spinlock bug in ep0_read().\nFix the two other deadlock sources in gadgetfs_setup() too.\n\nCc: <stable@vger.kernel.org> # v3.16+\nSigned-off-by: Bin Liu <b-liu@ti.com>\nSigned-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/d246dcb2331c5783743720e6510892eb1d2801d9"},{"sha":"51da43b555ba19e0230ff5a5acc58eb0fffb6026","author":{"name":"Vahram Aharonyan","email":"9daeadff47592abcf72c03e235f0c7470470af55@synopsys.com"},"message":"usb: dwc2: gadget: Do not halt endpoint if active\n\nThe gadget API function usb_ep_set_halt() expects the gadget to return\n-EAGAIN if the ep is active. Add support for this behavior.\n\nOtherwise this may break mass storage protocol if a STALL is attempted\non the endpoint.\n\nSigned-off-by: Vahram Aharonyan <vahrama@synopsys.com>\nSigned-off-by: John Youn <johnyoun@synopsys.com>\nSigned-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>","distinct":false,"url":"https://api.github.com/repos/kbingham/linux/commits/51da43b555ba19e0230ff5a5acc58eb0fffb6026"}]}
{"actor":{"display_login":"kbingham"}}