Commit graph

915365 commits

Author SHA1 Message Date
Peter Zijlstra
36cc552055 x86/kexec: Make relocate_kernel_64.S objtool clean
Having fixed the biggest objtool issue in this file; fix up the rest
and remove the exception.

Suggested-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lkml.kernel.org/r/20200324160924.202621656@infradead.org
2020-03-25 18:28:28 +01:00
Peter Zijlstra
fc8bd77d64 x86/kexec: Use RIP relative addressing
Normally identity_mapped is not visible to objtool, due to:

  arch/x86/kernel/Makefile:OBJECT_FILES_NON_STANDARD_relocate_kernel_$(BITS).o := y

However, when we want to run objtool on vmlinux.o there is no hiding
it:

  vmlinux.o: warning: objtool: .text+0x4c0f1: unsupported intra-function call

Replace the (i386 inspired) pattern:

	call 1f
  1:	popq %r8
	subq $(1b - relocate_kernel), %r8

With a x86_64 RIP-relative LEA:

	leaq relocate_kernel(%rip), %r8

Suggested-by: Brian Gerst <brgerst@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lkml.kernel.org/r/20200324160924.143334345@infradead.org
2020-03-25 18:28:27 +01:00
Peter Zijlstra
f0f70adb78 objtool: Rename func_for_each_insn_all()
Now that func_for_each_insn() is available, rename
func_for_each_insn_all(). This gets us:

  sym_for_each_insn()  - iterate on symbol offset/len
  func_for_each_insn() - iterate on insn->func

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lkml.kernel.org/r/20200324160924.083720147@infradead.org
2020-03-25 18:28:27 +01:00
Peter Zijlstra
dbf4aeb0a4 objtool: Rename func_for_each_insn()
There is func_for_each_insn() and func_for_each_insn_all(), the both
iterate the instructions, but the first uses symbol offset/length
while the second uses insn->func.

Rename func_for_each_insn() to sym_for_eac_insn() because it iterates
on symbol information.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lkml.kernel.org/r/20200324160924.024341229@infradead.org
2020-03-25 18:28:27 +01:00
Peter Zijlstra
a92e92d1a7 objtool: Introduce validate_return()
Trivial 'cleanup' to save one indentation level and match
validate_call().

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lkml.kernel.org/r/20200324160923.963996225@infradead.org
2020-03-25 18:28:27 +01:00
Mika Westerberg
58c42b0b0d ahci: Add Intel Comet Lake PCH-V PCI ID
Add Intel Comet Lake PCH-V PCI ID to the list of supported controllers.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 10:29:35 -06:00
Mika Westerberg
5e125d1337 ahci: Add Intel Comet Lake PCH-H PCI ID
Add Intel Comet Lake PCH-H PCI ID to the list of supported controllers.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 10:29:35 -06:00
Linus Walleij
45b8084f3f libata: Assign OF node to the SCSI device
When we spawn a SCSI device from an ATA device in libata-scsi
the SCSI device had no relation to the device tree.

The DT binding allows us to define port nodes under a
PATA (IDE) or SATA host controller, so we can have proper device
nodes for these devices.

If OF is enabled, walk the children of the host controller node
to see if there is a valid device tree node to assign. The reg
is used to match to ID 0 for the master device and ID 1 for the
slave device.

The corresponding device tree bindings have been accepted by
the device tree maintainers.

Cc: Chris Healy <cphealy@gmail.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 10:29:35 -06:00
John Garry
1d72f7aec3 libata: Remove extra scsi_host_put() in ata_scsi_add_hosts()
If the call to scsi_add_host_with_dma() in ata_scsi_add_hosts() fails,
then we may get use-after-free KASAN warns:

==================================================================
BUG: KASAN: use-after-free in kobject_put+0x24/0x180
Read of size 1 at addr ffff0026b8c80364 by task swapper/0/1
CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W         5.6.0-rc3-00004-g5a71b206ea82-dirty #1765
Hardware name: Huawei TaiShan 200 (Model 2280)/BC82AMDD, BIOS 2280-V2 CS V3.B160.01 02/24/2020
Call trace:
dump_backtrace+0x0/0x298
show_stack+0x14/0x20
dump_stack+0x118/0x190
print_address_description.isra.9+0x6c/0x3b8
__kasan_report+0x134/0x23c
kasan_report+0xc/0x18
__asan_load1+0x5c/0x68
kobject_put+0x24/0x180
put_device+0x10/0x20
scsi_host_put+0x10/0x18
ata_devres_release+0x74/0xb0
release_nodes+0x2d0/0x470
devres_release_all+0x50/0x78
really_probe+0x2d4/0x560
driver_probe_device+0x7c/0x148
device_driver_attach+0x94/0xa0
__driver_attach+0xa8/0x110
bus_for_each_dev+0xe8/0x158
driver_attach+0x30/0x40
bus_add_driver+0x220/0x2e0
driver_register+0xbc/0x1d0
__pci_register_driver+0xbc/0xd0
ahci_pci_driver_init+0x20/0x28
do_one_initcall+0xf0/0x608
kernel_init_freeable+0x31c/0x384
kernel_init+0x10/0x118
ret_from_fork+0x10/0x18

Allocated by task 5:
save_stack+0x28/0xc8
__kasan_kmalloc.isra.8+0xbc/0xd8
kasan_kmalloc+0xc/0x18
__kmalloc+0x1a8/0x280
scsi_host_alloc+0x44/0x678
ata_scsi_add_hosts+0x74/0x268
ata_host_register+0x228/0x488
ahci_host_activate+0x1c4/0x2a8
ahci_init_one+0xd18/0x1298
local_pci_probe+0x74/0xf0
work_for_cpu_fn+0x2c/0x48
process_one_work+0x488/0xc08
worker_thread+0x330/0x5d0
kthread+0x1c8/0x1d0
ret_from_fork+0x10/0x18

Freed by task 5:
save_stack+0x28/0xc8
__kasan_slab_free+0x118/0x180
kasan_slab_free+0x10/0x18
slab_free_freelist_hook+0xa4/0x1a0
kfree+0xd4/0x3a0
scsi_host_dev_release+0x100/0x148
device_release+0x7c/0xe0
kobject_put+0xb0/0x180
put_device+0x10/0x20
scsi_host_put+0x10/0x18
ata_scsi_add_hosts+0x210/0x268
ata_host_register+0x228/0x488
ahci_host_activate+0x1c4/0x2a8
ahci_init_one+0xd18/0x1298
local_pci_probe+0x74/0xf0
work_for_cpu_fn+0x2c/0x48
process_one_work+0x488/0xc08
worker_thread+0x330/0x5d0
kthread+0x1c8/0x1d0
ret_from_fork+0x10/0x18

There is also refcount issue, as well:
WARNING: CPU: 1 PID: 1 at lib/refcount.c:28 refcount_warn_saturate+0xf8/0x170

The issue is that we make an erroneous extra call to scsi_host_put()
for that host:

So in ahci_init_one()->ata_host_alloc_pinfo()->ata_host_alloc(), we setup
a device release method - ata_devres_release() - which intends to release
the SCSI hosts:

static void ata_devres_release(struct device *gendev, void *res)
{
	...
	for (i = 0; i < host->n_ports; i++) {
		struct ata_port *ap = host->ports[i];

		if (!ap)
			continue;

		if (ap->scsi_host)
			scsi_host_put(ap->scsi_host);

	}
	...
}

However in the ata_scsi_add_hosts() error path, we also call
scsi_host_put() for the SCSI hosts.

Fix by removing the the scsi_host_put() calls in ata_scsi_add_hosts() and
leave this to ata_devres_release().

Fixes: f31871951b ("libata: separate out ata_host_alloc() and ata_host_register()")
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 10:29:35 -06:00
Kai-Heng Feng
32d2545462 ahci: Add Intel Comet Lake H RAID PCI ID
Add the PCI ID to the driver list to support this new device.

Cc: stable@vger.kernel.org
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 10:29:35 -06:00
Arnd Bergmann
a0705d3c04 AT91 defconfig for 5.7
- Add sama5d4 watchdog to at91_dt_defconfig as it is present on sam9x60
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEycoQi/giopmpPgB12wIijOdRNOUFAl53JUAACgkQ2wIijOdR
 NOV7XA//RXE5gwrPNvvVw8Uo/7vafXcAp4872Za8BQ5tE5xRzdXnHMd5WFpM4cUu
 8anDa02PpqK7A6xvyYP5Er79gip6LF0B5SwJ5od5YVoDr/4zbHtu+DjtmgvvsD/U
 59fU8uUV1S8fxQ95AzCQiW5Sa8D5BQyFjOebrgSsQIl8bGchE5sfdsVpMBueS1im
 AEF5aS1bwBAJ7wyEpHt7B5Q3QGPfqcloZXBAw4156P3BuRyG6TjZG5JKY+0+qLUl
 YGLAh60w3pW0Q1FB3xdIv0YqTPxwKC3gEqu6me8Hv2xIQmA0V1Pfje+Vx+a7pByf
 Iu/KtvcRJakdwYnHXkr9UZXYDly1exY/Ak+nJHxmWzkXBZpGlqge1o/YyNXS98Tn
 sbIKwyO99+VbTqtJeSYtE8pmF2rCUJ+wuC9MjEYvP2wE1vfnPnHdQTBf8fEmv3zT
 RsIXp0e+h3Oq0FETeHQUs4zB/l1qDIqz+wZc0EViBdqJZOkocy2SFho/Zeu1CWaS
 S/tAiRQLtEXJBnSVtN9Bz3hZImISE2GBPbeUZMIPDmg3JipNUvLLP9euHz1P782r
 YJxPnZhvzygtI1dAUE+7tHOIsKaleHDivQp6r59q0nYoiQZYK9Ux6uUyeZGE87jy
 PvbvkBUShamhJcnwc3TcsfmlbDCGxN/lshctP944+tOgjXhpgRc=
 =27k/
 -----END PGP SIGNATURE-----

Merge tag 'at91-5.7-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into arm/config

AT91 defconfig for 5.7

 - Add sama5d4 watchdog to at91_dt_defconfig as it is present on sam9x60

* tag 'at91-5.7-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/at91/linux:
  ARM: configs: at91: enable sama5d4 compatible watchdog

Link: https://lore.kernel.org/r/20200322085711.GA208700@piout.net
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 17:22:53 +01:00
Arnd Bergmann
bd7a70641e Defconfig changes for omaps for v5.7 merge window
We want to enable some more features for omap2plus_defconfig to make it
 more usable:
 
 - Enable scururity for ext4 so setcap works
 
 - Enable simple-pm-bus so it can be later on be configured in the dts
   files as needed
 
 - Enable zram as loadable modules as we do have devices using it
 
 - Enable more devices for droid4 for 1-wire battery eeprom and isl29028
   proximity sensor
 
 - Enable mcpdm clocks from the PMIC as loadable modules
 
 - Enable ina2xx_adc as loadable module
 
 - And finally let's also  omap2plus_deconfig for moved and dropped options
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEkgNvrZJU/QSQYIcQG9Q+yVyrpXMFAl5xBl0RHHRvbnlAYXRv
 bWlkZS5jb20ACgkQG9Q+yVyrpXP6Qw/9H9X3lNoPXjAocE/BK5BNKBpg4ef11Ivy
 sWS9Ok1wZ3wIsHAbGvhNpzQbTvlrLvF/8KFFClRmiATMH2+xDwjKDw5iuR2qYr7t
 5c252gOQ2NoK6RqtYZJwdKird++d427/0J9QXlYmtDy6Jf+aJrbIzEnGadHyEVES
 uag8S/91pmJyqpGTndW1N9TruEmsIWXc/CEDHwIyShT+XYyiXr5djPK+oFRm7ReV
 BM6Ho6Rq1Ps5oTIYANeNMnxdhwocEIjmqwolb9Hw9qmM9d8StMqx6Svw+NyRN3Xb
 TZANXvV00Zk6ZwzFRBEsLiVdDZPuo9rlLiJsYUBDOg5JMf6cFaVvL1K5pbWFP8l2
 Uw+hDu7O2eBeX+Q9ksudkipYly+PWqdZ74Fe7Er87fq8KM3OT12gDVcMJX3mtz9v
 CMzoXzno8w2KMLLNQnnWsSCkWD37p9EUrGgKYKo9LGGUZsmJA2y5f89tep2TwCNQ
 69V8vdFRlhtXpV/U5+UuCtM0G8ebeP/cD8qvzRjojbaN0EJ/v06kSQyu5De2743a
 2T+azAZbHSQpYy1Ap+bklRPMxtFNO33K6TC4Mtlg+0JwL560wsHziIlUkfNOajV0
 ZVaNlyQVuSUVNHSw+65mNZZkNj7XdDFdNSFrf+t3FMDWEKHCedFhbYJBpMef8x95
 uG14G7R2rXE=
 =Icp5
 -----END PGP SIGNATURE-----

Merge tag 'omap-for-v5.7/defconfig-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into arm/config

Defconfig changes for omaps for v5.7 merge window

We want to enable some more features for omap2plus_defconfig to make it
more usable:

- Enable scururity for ext4 so setcap works

- Enable simple-pm-bus so it can be later on be configured in the dts
  files as needed

- Enable zram as loadable modules as we do have devices using it

- Enable more devices for droid4 for 1-wire battery eeprom and isl29028
  proximity sensor

- Enable mcpdm clocks from the PMIC as loadable modules

- Enable ina2xx_adc as loadable module

- And finally let's also  omap2plus_deconfig for moved and dropped options

* tag 'omap-for-v5.7/defconfig-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: omap2plus_defconfig: Update for moved and dropped options
  ARM: omap2plus_defconfig: Enable ina2xx_adc as a loadable module
  ARM: omap2plus_defconfig: Enable McPDM optional PMIC clock as modules
  ARM: omap2plus_defconfig: Enable more droid4 devices as loadable modules
  ARM: omap2plus_defconfig: Enable zram as loadable modules
  ARM: omap2plus_defconfig: Enable simple-pm-bus
  ARM: omap2plus_defconfig: Enable ext4 security for setcap

Link: https://lore.kernel.org/r/pull-1584575344-983293@atomide.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 17:22:01 +01:00
Arnd Bergmann
9441e1f8fd i.MX defconfig changes for 5.7:
- A seris from Li Yang to make defconfig useful for NXP LS family SoCs.
    Most drivers are built as module there, but those helping boot system
    with NFS are enabled built-in.
  - Enable i.MX8MP pinctrl and i.MX8MM thermal driver support in
    defconfig.
  - Enable i.MX DRM driver support for multi_v7_defconfig.
  - Enable ATMEL_MXT and AD7879 touch support for imx_v6_v7_defconfig.
 -----BEGIN PGP SIGNATURE-----
 
 iQFIBAABCgAyFiEEFmJXigPl4LoGSz08UFdYWoewfM4FAl5xnT0UHHNoYXduZ3Vv
 QGtlcm5lbC5vcmcACgkQUFdYWoewfM7/cwf/W3mjSLA4MhY8brUydqYYlPTPDhZT
 ZNvQLG8/dfeCnfuTF9Z8kXTkEXI+CgyzzLwWvRSxPDIvCcxFV38yjWEWodMWSMPc
 gTPMHkRRCu63VuE0suwDSDsaPn4/g3s5E51kFzSoEnSSy0n+fVmXJosVoB9bEDNF
 o15R3qT7leFwoR+bAB+h7X8EloPCC7QzZKpKZfNlIFfDd6aMObo1++HY+FqeNy7S
 88lD+JdW2yyoj9r9Qkx3k/c3Hh+1uMysIM8FsVqeYSPGSrN8eK+wA5CqtHQ3TF8/
 jcB7LdH0US8qL3oSnweCuT3Pb6zRtQwrsnpMZVR7Urue6Thq9i08jVuvUw==
 =5yPc
 -----END PGP SIGNATURE-----

Merge tag 'imx-defconfig-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/config

i.MX defconfig changes for 5.7:

 - A seris from Li Yang to make defconfig useful for NXP LS family SoCs.
   Most drivers are built as module there, but those helping boot system
   with NFS are enabled built-in.
 - Enable i.MX8MP pinctrl and i.MX8MM thermal driver support in
   defconfig.
 - Enable i.MX DRM driver support for multi_v7_defconfig.
 - Enable ATMEL_MXT and AD7879 touch support for imx_v6_v7_defconfig.

* tag 'imx-defconfig-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: (22 commits)
  arm64: defconfig: Enable e1000 device
  arm64: defconfig: Enable PHY devices used on QorIQ boards
  arm64: defconfig: Enable RTC devices for QorIQ boards
  arm64: defconfig: Enable flash device drivers for QorIQ boards
  arm64: defconfig: Enable ARM Mali display driver
  arm64: defconfig: Enable QorIQ GPIO driver
  arm64: defconfig: Enable QorIQ IFC NAND controller driver
  arm64: defconfig: Enable ARM SBSA watchdog driver
  arm64: defconfig: Enable QorIQ cpufreq driver
  arm64: defconfig: Enable NXP/FSL SPI controller drivers
  arm64: defconfig: Enable ENETC Ethernet controller and FELIX switch
  arm64: defconfig: Enable QorIQ DPAA2 drivers
  arm64: defconfig: Enable QorIQ DPAA1 drivers
  arm64: defconfig: Enable NXP flexcan driver
  arm64: defconfig: run through savedefconfig for ordering
  arm64: defconfig: Enable CONFIG_IMX8MM_THERMAL as module
  arm64: defconfig: add i.MX system controller thermal support
  ARM: multi_v7_defconfig: enable drm imx support
  arm64: defconfig: Enable CONFIG_PCIE_LAYERSCAPE_GEN4
  ARM: imx_v6_v7_defconfig: Enable TOUCHSCREEN_AD7879
  ...

Link: https://lore.kernel.org/r/20200318051918.32579-6-shawnguo@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 17:21:15 +01:00
Arnd Bergmann
7f5fa01257 Qualcomm ARM defconfig updates for v5.7
Enable QRTR and the Broadcomm bluetooth driver in the qcom_defconfig,
 for usage on the 8974 devices.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAl5xpIMbHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FPfEP/1LAgxraodf3d+V/Qb5i
 LiMj9JVFrx1r8xeH9hMEvoJzjvaj9aCHVkRyO4eZaqPvSDnHqGKUajhzJBldxQzc
 RXGOhCwuw+ZkMi9ilCoVDUIFXbysvOPWZiJvzhvux4DT1r+L1uOyFwze3VQDr24g
 QJQkXyzg0bbTx1I5O4hi0mBZ/A6wj0CxhIDZAF3dzKOhZsobuZ7ZqFeTIDqRuG73
 /vH4pWBSg3TELL65GbOQyK1YvD4K27CRmILi0M8OX9v67NppAIElSZfqg7H0j6Ec
 2I/ueWqQ6E4d96E3x984EgGIQcDPk9n2J17GfEEn2RTfhUfq711IQJUG/tnzLT9g
 F7LbK/M83SU3ejZ3nH/nbDhEUaz60drwFZQOZ5X971kr6bvFhsaCbKd0FA1FmzrO
 LvoJU9pxagil5fO9FKNWcoCoCrXyfA4hR6oT9jQVj09PvRQ/A9TrGj+Vi7kSssuC
 i5Q9hZ9VzwE0fSNPw9F6qwCsR+qOHkOIV95R+ghJOj+x5jOrOrfEPf5BcbOG6iiu
 l3QIrwRPvA0g5u5fcQcv8nHNd97XCpRSUaYLgX+0uzw//IeLUYopWa3yLncZfGVl
 Hwn6P3OfW2dZYUXOLwrtKmLFi8yUmpFbqkJaNpNBWDXqrdZVhHDHtb3dl3+dZyyA
 dAFF8AYncYisnUA1m0+qFOlj
 =RP0d
 -----END PGP SIGNATURE-----

Merge tag 'qcom-defconfig-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/config

Qualcomm ARM defconfig updates for v5.7

Enable QRTR and the Broadcomm bluetooth driver in the qcom_defconfig,
for usage on the 8974 devices.

* tag 'qcom-defconfig-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
  ARM: qcom_defconfig: Enable QRTR
  ARM: qcom_defconfig: add Broadcom bluetooth options

Link: https://lore.kernel.org/r/20200318043931.GC470201@yoga
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 17:16:44 +01:00
Arnd Bergmann
bc82a35b9a Qualcomm ARM64 defconfig updates for v5.7
Enable SDM845 audio, display and gpu related configs and the Truly
 NT35597 panel driver, all relevant for various SDM845 based boards.
 Enable IPQ6018 clocks and pinctrl and the pmic vibrator driver for
 PM8916.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAl5xpEwbHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FResQALEYZ1hptpViAtgKo9kO
 8He1u+jCdS7lVcHjZowmCBL9MhuLKlE56ZxHSGR0qhdBJ32LVl5IM//Uj1NQuk2V
 a86J0GpJ5JT11spzjXpvdxZ5NcrXPErPjpIdBDnC57yXfCPrOkPeiAO1MX3vSolQ
 ABWZOTxK1eexa4MRyd7Ml9U0SEAo4uB0XXFGw/2vcjGCQOfr3NzDCshx693RIAQm
 Q/74FBF1Ww2XXLRZaq4s15jFFzeaIGafpmVpJKPJAWowDZPIlWZIPooOBGElghak
 2P+hHZlKol+umHvVOC+dbsk1Tr4/ZHQsLYiD0zqKogmPZNRzuJwXgEUCbQl/AGbt
 T5rQ3HCnIO5Q9+g/bA67F51ycSFqsdnONvgaEk+VDE9EBmpoU9F9y8HeDHttgjUe
 aadGvoI2eX8iF78iGSdmxrnudCnO3KmN1jPiKThwwfNmpZ+NkwlT0BAylf2m44tM
 42gvLhZ+UbVlZmC/+QykVYYRsvmj8hPCTZF7/dyvvAnyw41VFTv8u5OZxNl6Ltnq
 CBLJhYAfTxFcFux/cu2yumPeRjTAQiLWiEXgJecpk21xIs98okNaNjczDEIi3Bg2
 kOgKOQJ/BKzwrzS1ALQghde1h4TZdakme+TIOA3Zn75KNkDmMsclk2gS3QVhYV5M
 NTcbraHWjSkpe5KK98pMZFYC
 =GDt8
 -----END PGP SIGNATURE-----

Merge tag 'qcom-arm64-defconfig-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/config

Qualcomm ARM64 defconfig updates for v5.7

Enable SDM845 audio, display and gpu related configs and the Truly
NT35597 panel driver, all relevant for various SDM845 based boards.
Enable IPQ6018 clocks and pinctrl and the pmic vibrator driver for
PM8916.

* tag 'qcom-arm64-defconfig-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
  arm64: defconfig: Enable Qualcomm SDM845 audio configs
  arm64: defconfig: Enable Truly NT35597 WQXGA panel
  arm64: defconfig: Enable Qualcomm SDM845 display and gpu clocks
  arm64: defconfig: Enable qcom ipq6018 clock and pinctrl
  arm64: defconfig: Enable Qualcomm PM8XXX vibrator support

Link: https://lore.kernel.org/r/20200318043856.GB470201@yoga
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 17:15:43 +01:00
Arnd Bergmann
7b614fd7f6 Samsung defconfig changes for v5.7
1. Enable Energy Model and Multi-core scheduler because they fit common
    use of Exynos SoCs - mobile devices,
 2. Enable more drivers for GalaxyS3/Trats2.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAl5vvEUQHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD17inEACazIONK//wzfmqnNKlT+WnJuEiZn7iX8bn
 dN8qsrT3LQMSxQhx3urce/WSMSkcWmYqWn4JkQsfYHYidoLCvsmZuAbTcWJCHCEF
 dLY4diaVGeXVQE9F2zUlsyAOErxgnV8fv8yzmu9c7g3s6aF1k3SztGgu0xASXjO2
 IxOEFKZ7P5lhuO/rvdi4afGKxssY5pSlzdaRWpXZYkXDiE8MCJrRC/fiQaiywqi8
 8eVIYcotTmHNpWGL2+Zt9wHZnG4ZWFHVjYxdwVDG8NMGE910HPXT4IQSCBXf4am8
 hjae7dppdjuufraNw4cX4z1n7hUPZ3Y808nIcp2uD2Si6LwnkA/S0DlIl0a+RbpA
 6nkxyeKhz1WIzucyAk0W7wkmMs5AHmmAfnW6ODxOiNaS4+wPzSwmsdHZFLD+9LF8
 vz0Nt77q5OvEw5tcA8i2JqwcBoOlHx4zoU9lmmdGXZjBGUZ4jPQyqiSL2qbNhOo5
 9RSWetCf/IqImGW68MQ6L/BLhoJrim3mFHLYJB2s9QxaXpDLEV7OC+NZsR+i4/qW
 KxZFl6nEO6AjXZjHMWsG5yjmLJDdIGH5l+M4Rjhs1WG859nJWCVuF9j3RM6vcY4Y
 5PtDrjJWJbAxZ/NZp//tgY3iumVECFLfNSO3Pis+PajfmcbF8JnrO++ylWG0KDLB
 UfGKhMqT1Q==
 =KSB7
 -----END PGP SIGNATURE-----

Merge tag 'samsung-defconfig-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/config

Samsung defconfig changes for v5.7

1. Enable Energy Model and Multi-core scheduler because they fit common
   use of Exynos SoCs - mobile devices,
2. Enable more drivers for GalaxyS3/Trats2.

* tag 'samsung-defconfig-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  ARM: exynos_defconfig: Add more drivers for GalaxyS3/Trats2
  ARM: exynos_defconfig: Enable SCHED_MC and ENERGY_MODEL
  ARM: exynos_defconfig: Enable SquashFS and increase RAM block device size

Link: https://lore.kernel.org/r/20200316175652.5604-2-krzk@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 17:12:42 +01:00
Shane Francis
47f7826c52 drm/radeon: fix scatter-gather mapping with user pages
Calls to dma_map_sg may return less segments / entries than requested
if they fall on page bounderies. The old implementation did not
support this use case.

Fixes: be62dbf554 ("iommu/amd: Convert AMD iommu driver to the dma-iommu api")
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=206461
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=206895
Bug: https://gitlab.freedesktop.org/drm/amd/issues/1056
Signed-off-by: Shane Francis <bigbeeshane@gmail.com>
Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200325090741.21957-4-bigbeeshane@gmail.com
Cc: stable@vger.kernel.org
2020-03-25 12:10:55 -04:00
Shane Francis
0199172f93 drm/amdgpu: fix scatter-gather mapping with user pages
Calls to dma_map_sg may return less segments / entries than requested
if they fall on page bounderies. The old implementation did not
support this use case.

Fixes: be62dbf554 ("iommu/amd: Convert AMD iommu driver to the dma-iommu api")
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=206461
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=206895
Bug: https://gitlab.freedesktop.org/drm/amd/issues/1056
Signed-off-by: Shane Francis <bigbeeshane@gmail.com>
Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200325090741.21957-3-bigbeeshane@gmail.com
Cc: stable@vger.kernel.org
2020-03-25 12:10:40 -04:00
Benjamin Gaignard
2dccf69454 dt-bindings: mfd: Convert stpmic1 bindings to json-schema
Convert stpmic1 bindings to json-schema.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com>
Signed-off-by: Rob Herring <robh@kernel.org>
2020-03-25 10:07:33 -06:00
Shane Francis
42e67b479e drm/prime: use dma length macro when mapping sg
As dma_map_sg can reorganize scatter-gather lists in a
way that can cause some later segments to be empty we should
always use the sg_dma_len macro to fetch the actual length.

This could now be 0 and not need to be mapped to a page or
address array

Fixes: be62dbf554 ("iommu/amd: Convert AMD iommu driver to the dma-iommu api")
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=206461
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=206895
Bug: https://gitlab.freedesktop.org/drm/amd/issues/1056
Signed-off-by: Shane Francis <bigbeeshane@gmail.com>
Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200325090741.21957-2-bigbeeshane@gmail.com
Cc: stable@vger.kernel.org
2020-03-25 12:01:23 -04:00
Arnd Bergmann
59aa3dae07 ARM: tegra: Default configuration changes for v5.7-rc1
These patches enable the new, unified CPU idle driver for Tegra20,
 Tegra30 and Tegra114.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAl5rtwITHHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zoQDtD/0b2wGBjBem/Md2bHO+hfN10VQug0tj
 WOWD4fW9y5ooHSL/aTmoe+eVuxbdIf2+QTjpAKsVyiWuu5HrZS/40yMwub0DHA2q
 Z3sKPn6/AWr1kOpfrwcOUCTQPOdb6eMIHwUKKKf/RbaBrFcxE+k4nPoW1KCy1oDU
 RG+/5UEzraAEJd08Nzrx86QlQfELNi7oCNQLv5d+x9Zpro/Ne6JC1A6ALkl4u6G8
 7nq5Nv07BhI7Ve0S9fqY/TNRu152wETXWczwsp+l1qlLExNRcdtxaRHyuz4iqCMU
 DON13qTXOcvWtG9eqLNS0CC9vqkn9DIM3rikqui7WGyldwtLYIgEK5fZoLJPhNAw
 fj5nk1Sh//vumKYxLsdMzrh1lKAdI9RyhiIbY8VYB1ZgwEjD46NHGS+bO8XR4xeE
 sPBbVJdTHbaJLoZELNnc7FBSnL7GcKRbh8xp2VKEtoYPV3mjmQeOkytshYfJFrSD
 qGTTyTt6qJti67rwzehhptJ5lytKTaRyyUMfw79tvqgSm1sku0WAoy70RuKl1z13
 x4tWG134xZAsbGx0uN2/8Bj2si3qujlorxh2is9fHx9893XPdDbCza2N2JWbgeEU
 8YHB1n7cDtrUywa7d9mEBkLm1YdHNQo8sc/yzkmhHKcqY4WKLZgiM7FACqIaPe6a
 ii8ZiEi69nXq0A==
 =usMf
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-5.7-arm-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/config

ARM: tegra: Default configuration changes for v5.7-rc1

These patches enable the new, unified CPU idle driver for Tegra20,
Tegra30 and Tegra114.

* tag 'tegra-for-5.7-arm-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  ARM: tegra: Enable Tegra cpuidle driver in tegra_defconfig
  ARM: multi_v7_defconfig: Enable Tegra cpuidle driver

Link: https://lore.kernel.org/r/20200313165848.2915133-7-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 16:51:42 +01:00
Arnd Bergmann
82cb08f0c9 This pull request contains Broadcom ARM-based SoCs defconfig changes for
v5.7, please pull the following:
 
 - Marek enables the Raspberry Pi 4 specific drivers: GENET, thermal, and
   GPIO regulator support in bcm2835_defconfig
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEm+Rq3+YGJdiR9yuFh9CWnEQHBwQFAl5pU9wACgkQh9CWnEQH
 BwTRuBAApsno1KRwzGgFV0XRAKtAlzAIBcugIMZvu9jNYW024fhbLkrFpJDapWV6
 Bs12fAlNZ90QuihmjEcsuCb6oLlS1GSTDbWyOdK0eyJmFFR64jNut91oJVD7nEJr
 MnsB0zNAbWzW7pyy/w/D6liP2QtQ3cMKeui5R1XcnY4jkNvvB+hTP5/W8lqoWPE6
 UPbA010c20PYzmzjR/Rj36oKTcUKIOng+On0gphoewbriFQRDLt5MkoiKvLzpBsf
 JRHCU2mK7j9TAfPuPDQLlPkRKYPEU0fyFGkXuoyugwnI8UcwVtxQEXfR9ea2fZ8l
 IJcAMHf7tmfBWaOJEQ6VF/Gjg5AC1qkq583j9vc2lfUG6Lead5Q/St1EuHu6G141
 r19OZXn81YNhxZbeFAH3OhiD8RZKe3sG1But64p2LfCRFHWTqSsy0SWEC1zsamVq
 c/O2hOiWYjKoJXaZaF8NrJfXwfVqRC/XsNILM6/LL7YvjnhNry+YyKfNYgCa62SH
 I1KIQdHB3nRNDtVu1gCuUiXU/1tT33xcl+g8/FH5FmP0UaoTDyDvDTsVXMlfoedR
 foOOFGFMPt4bjZm3/Q4CiU5FWSMg4PYRZjgrZoXhhDy1X1qKnUFkrOLFVU4T/wdj
 hOziExlNVOYxYGIcX8/9CfpQ7+lr+vW9KgMlbA/cSTxh+ZOE3bM=
 =XFZP
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc/for-5.7/defconfig' of https://github.com/Broadcom/stblinux into arm/config

This pull request contains Broadcom ARM-based SoCs defconfig changes for
v5.7, please pull the following:

- Marek enables the Raspberry Pi 4 specific drivers: GENET, thermal, and
  GPIO regulator support in bcm2835_defconfig

* tag 'arm-soc/for-5.7/defconfig' of https://github.com/Broadcom/stblinux:
  ARM: bcm2835_defconfig: add support for Raspberry Pi4

Link: https://lore.kernel.org/r/20200311212012.9418-1-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 16:50:58 +01:00
Christoph Hellwig
c6a564ffad block: move the part_stat* helpers from genhd.h to a new header
These macros are just used by a few files.  Move them out of genhd.h,
which is included everywhere into a new standalone header.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:50:09 -06:00
Christoph Hellwig
581e26004a block: move block layer internals out of include/linux/genhd.h
None of this needs to be exposed to drivers.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:50:08 -06:00
Christoph Hellwig
29125ed624 block: move guard_bio_eod to bio.c
This is bio layer functionality and not related to buffer heads.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:50:08 -06:00
Christoph Hellwig
1b4d4dbdae block: unexport get_gendisk
get_gendisk is not used by any modular code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:50:08 -06:00
Christoph Hellwig
a7818aedda block: unexport disk_map_sector_rcu
disk_map_sector_rcu is not used by any modular code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:50:08 -06:00
Christoph Hellwig
572e7fc85b block: unexport disk_get_part
disk_get_part is not used by any modular code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:50:08 -06:00
Christoph Hellwig
6005771c17 block: mark part_in_flight and part_in_flight_rw static
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:50:08 -06:00
Christoph Hellwig
31eb618679 block: mark block_depr static
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:50:08 -06:00
Arnd Bergmann
c824d107e0 ARM64: hisilicon: defconfig updates for 5.7
- Enable MEGARAID_SAS to be able to boot from
   disk for the D06CS development board
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJeYL3BAAoJEAvIV27ZiWZcso8P/0QtYy0Faf1+nKKJaGg5QhPH
 37PJvsCsoqhVIF30OUnprv3dt8Y7y3XmoEP8raXp4mWQctukjIl2AFlUfqw4ci3x
 Dy8IYKR9GhqBF/+ITVSZPivnsNrs+DgRPEUqCeaEXe9pjGafuyDl0zrD0rEhXLLz
 c5m6jG4u42lC4AS1IlHajNwECKGAPsaE1eCEl1ZEIhBE/vRKaWVlxoK1hasCxRZj
 L2RtHWtni1ToQ8K2BzIJ06zp23Hq1fDUx6DJ9xDvJsrd7BWFlkOZArEEKRyFdyku
 wENIOSyEbo98zDZ6xcHf17zCpnnUXJF7hbNsAGyBYLmfZIMfSl8yJB7ICwKxmLwh
 oBQQOoZYfyXwcNVUrxTS7E0iNeUAYNw0S10W4ILsrS7KFBvt4bMIgP/DLuWa0YYz
 /KUIWNapQg83d1qVBtHddHkv42HwgEIdmiOkmNi1qtNcD8YZSHVxNKq/x1HUpyR6
 nCTrMFgAMZtTwZFVBz5VVe4JOFZQnta+FuAz9z/E120n/EHjBF5XAkunZZnViuy9
 XU2DoVHTM/meJQtP9bOFTSoNeiT6jOxBpDkjQFu3rHVDHRw4vrR2fjIChtuws7HJ
 i/3C1HXycyKRva61sy6LNliIgff63n/1QvNsadHU17nthLMm4BbkMyeq/ktTWD9l
 AczotXpDZ/LaryQN1HgC
 =+dLX
 -----END PGP SIGNATURE-----

Merge tag 'hisi-arm64-defconfig-for-5.7' of git://github.com/hisilicon/linux-hisi into arm/config

ARM64: hisilicon: defconfig updates for 5.7

- Enable MEGARAID_SAS to be able to boot from
  disk for the D06CS development board

* tag 'hisi-arm64-defconfig-for-5.7' of git://github.com/hisilicon/linux-hisi:
  arm64: defconfig: Enable MEGARAID_SAS

Link: https://lore.kernel.org/r/5E61F3C1.1080909@hisilicon.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2020-03-25 16:49:20 +01:00
Johannes Thumshirn
c92a41031a block: factor out requeue handling from dispatch code
Factor out the requeue handling from the dispatch code, this will make
subsequent addition of different requeueing schemes easier.

Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-03-25 09:40:24 -06:00
Robbie Ko
6ff06729c2 btrfs: fix missing semaphore unlock in btrfs_sync_file
Ordered ops are started twice in sync file, once outside of inode mutex
and once inside, taking the dio semaphore. There was one error path
missing the semaphore unlock.

Fixes: aab15e8ec2 ("Btrfs: fix rare chances for data loss when doing a fast fsync")
CC: stable@vger.kernel.org # 4.19+
Signed-off-by: Robbie Ko <robbieko@synology.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
[ add changelog ]
Signed-off-by: David Sterba <dsterba@suse.com>
2020-03-25 16:29:16 +01:00
Josef Bacik
351cbf6e44 btrfs: use nofs allocations for running delayed items
Zygo reported the following lockdep splat while testing the balance
patches

======================================================
WARNING: possible circular locking dependency detected
5.6.0-c6f0579d496a+ #53 Not tainted
------------------------------------------------------
kswapd0/1133 is trying to acquire lock:
ffff888092f622c0 (&delayed_node->mutex){+.+.}, at: __btrfs_release_delayed_node+0x7c/0x5b0

but task is already holding lock:
ffffffff8fc5f860 (fs_reclaim){+.+.}, at: __fs_reclaim_acquire+0x5/0x30

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-> #1 (fs_reclaim){+.+.}:
       fs_reclaim_acquire.part.91+0x29/0x30
       fs_reclaim_acquire+0x19/0x20
       kmem_cache_alloc_trace+0x32/0x740
       add_block_entry+0x45/0x260
       btrfs_ref_tree_mod+0x6e2/0x8b0
       btrfs_alloc_tree_block+0x789/0x880
       alloc_tree_block_no_bg_flush+0xc6/0xf0
       __btrfs_cow_block+0x270/0x940
       btrfs_cow_block+0x1ba/0x3a0
       btrfs_search_slot+0x999/0x1030
       btrfs_insert_empty_items+0x81/0xe0
       btrfs_insert_delayed_items+0x128/0x7d0
       __btrfs_run_delayed_items+0xf4/0x2a0
       btrfs_run_delayed_items+0x13/0x20
       btrfs_commit_transaction+0x5cc/0x1390
       insert_balance_item.isra.39+0x6b2/0x6e0
       btrfs_balance+0x72d/0x18d0
       btrfs_ioctl_balance+0x3de/0x4c0
       btrfs_ioctl+0x30ab/0x44a0
       ksys_ioctl+0xa1/0xe0
       __x64_sys_ioctl+0x43/0x50
       do_syscall_64+0x77/0x2c0
       entry_SYSCALL_64_after_hwframe+0x49/0xbe

-> #0 (&delayed_node->mutex){+.+.}:
       __lock_acquire+0x197e/0x2550
       lock_acquire+0x103/0x220
       __mutex_lock+0x13d/0xce0
       mutex_lock_nested+0x1b/0x20
       __btrfs_release_delayed_node+0x7c/0x5b0
       btrfs_remove_delayed_node+0x49/0x50
       btrfs_evict_inode+0x6fc/0x900
       evict+0x19a/0x2c0
       dispose_list+0xa0/0xe0
       prune_icache_sb+0xbd/0xf0
       super_cache_scan+0x1b5/0x250
       do_shrink_slab+0x1f6/0x530
       shrink_slab+0x32e/0x410
       shrink_node+0x2a5/0xba0
       balance_pgdat+0x4bd/0x8a0
       kswapd+0x35a/0x800
       kthread+0x1e9/0x210
       ret_from_fork+0x3a/0x50

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(fs_reclaim);
                               lock(&delayed_node->mutex);
                               lock(fs_reclaim);
  lock(&delayed_node->mutex);

 *** DEADLOCK ***

3 locks held by kswapd0/1133:
 #0: ffffffff8fc5f860 (fs_reclaim){+.+.}, at: __fs_reclaim_acquire+0x5/0x30
 #1: ffffffff8fc380d8 (shrinker_rwsem){++++}, at: shrink_slab+0x1e8/0x410
 #2: ffff8881e0e6c0e8 (&type->s_umount_key#42){++++}, at: trylock_super+0x1b/0x70

stack backtrace:
CPU: 2 PID: 1133 Comm: kswapd0 Not tainted 5.6.0-c6f0579d496a+ #53
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
Call Trace:
 dump_stack+0xc1/0x11a
 print_circular_bug.isra.38.cold.57+0x145/0x14a
 check_noncircular+0x2a9/0x2f0
 ? print_circular_bug.isra.38+0x130/0x130
 ? stack_trace_consume_entry+0x90/0x90
 ? save_trace+0x3cc/0x420
 __lock_acquire+0x197e/0x2550
 ? btrfs_inode_clear_file_extent_range+0x9b/0xb0
 ? register_lock_class+0x960/0x960
 lock_acquire+0x103/0x220
 ? __btrfs_release_delayed_node+0x7c/0x5b0
 __mutex_lock+0x13d/0xce0
 ? __btrfs_release_delayed_node+0x7c/0x5b0
 ? __asan_loadN+0xf/0x20
 ? pvclock_clocksource_read+0xeb/0x190
 ? __btrfs_release_delayed_node+0x7c/0x5b0
 ? mutex_lock_io_nested+0xc20/0xc20
 ? __kasan_check_read+0x11/0x20
 ? check_chain_key+0x1e6/0x2e0
 mutex_lock_nested+0x1b/0x20
 ? mutex_lock_nested+0x1b/0x20
 __btrfs_release_delayed_node+0x7c/0x5b0
 btrfs_remove_delayed_node+0x49/0x50
 btrfs_evict_inode+0x6fc/0x900
 ? btrfs_setattr+0x840/0x840
 ? do_raw_spin_unlock+0xa8/0x140
 evict+0x19a/0x2c0
 dispose_list+0xa0/0xe0
 prune_icache_sb+0xbd/0xf0
 ? invalidate_inodes+0x310/0x310
 super_cache_scan+0x1b5/0x250
 do_shrink_slab+0x1f6/0x530
 shrink_slab+0x32e/0x410
 ? do_shrink_slab+0x530/0x530
 ? do_shrink_slab+0x530/0x530
 ? __kasan_check_read+0x11/0x20
 ? mem_cgroup_protected+0x13d/0x260
 shrink_node+0x2a5/0xba0
 balance_pgdat+0x4bd/0x8a0
 ? mem_cgroup_shrink_node+0x490/0x490
 ? _raw_spin_unlock_irq+0x27/0x40
 ? finish_task_switch+0xce/0x390
 ? rcu_read_lock_bh_held+0xb0/0xb0
 kswapd+0x35a/0x800
 ? _raw_spin_unlock_irqrestore+0x4c/0x60
 ? balance_pgdat+0x8a0/0x8a0
 ? finish_wait+0x110/0x110
 ? __kasan_check_read+0x11/0x20
 ? __kthread_parkme+0xc6/0xe0
 ? balance_pgdat+0x8a0/0x8a0
 kthread+0x1e9/0x210
 ? kthread_create_worker_on_cpu+0xc0/0xc0
 ret_from_fork+0x3a/0x50

This is because we hold that delayed node's mutex while doing tree
operations.  Fix this by just wrapping the searches in nofs.

CC: stable@vger.kernel.org # 4.4+
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2020-03-25 16:26:00 +01:00
Yousong Zhou
aebdc6ff3b MIPS: Exclude more dsemul code when CONFIG_MIPS_FP_SUPPORT=n
This furthers what commit 42b10815d5 ("MIPS: Don't compile math-emu
when CONFIG_MIPS_FP_SUPPORT=n") has done

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-03-25 16:07:14 +01:00
Huacai Chen
d191aaffe3 MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3
LDDIR/LDPTE is Loongson-3's acceleration for Page Table Walking. If BD
(Base Directory, the 4th page directory) is not enabled, then GDOffset
is biased by BadVAddr[63:62]. So, if GDOffset (aka. BadVAddr[47:36] for
Loongson-3) is big enough, "0b11(BadVAddr[63:62])|BadVAddr[47:36]|...."
can far beyond pg_swapper_dir. This means the pg_swapper_dir may NOT be
accessed by LDDIR correctly, so fix it by set PWDirExt in CP0_PWCtl.

Cc: <stable@vger.kernel.org>
Signed-off-by: Pei Huang <huangpei@loongson.cn>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-03-25 16:07:14 +01:00
Masahiro Yamada
78bdbbac08 MIPS: do not compile generic functions for CONFIG_CAVIUM_OCTEON_SOC
MIPS provides multiple definitions for the following functions:

  fw_init_cmdline
  __delay
  __udelay
  __ndelay
  memmove
  __rmemcpy
  memcpy
  __copy_user

The generic ones are defined in lib-y objects, which are overridden by
the Octeon ones when CONFIG_CAVIUM_OCTEON_SOC is enabled.

The use of EXPORT_SYMBOL in static libraries potentially causes a
problem for the llvm linker [1]. So, I want to forcibly link lib-y
objects to vmlinux when CONFIG_MODULES=y.

As a groundwork, we must fix multiple definitions that have previously
been hidden by lib-y.

If you look at lib/string.c, arch can define __HAVE_ARCH_* to opt out
the generic implementation.

Similarly, this commit adds CONFIG_HAVE_PLAT_* to allow a platform
to opt out the MIPS generic code.

[1]: https://github.com/ClangBuiltLinux/linux/issues/515

Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-03-25 16:07:13 +01:00
Jiaxun Yang
3e4990138a MAINTAINERS: Update Loongson64 entry
To include newly added irqchip drivers.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-03-25 16:07:13 +01:00
Jiaxun Yang
fcecdcd388 MIPS: Loongson64: Load built-in dtbs
Load proper dtb according to firmware passed parameters and
CPU PRID.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Co-developed-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-03-25 16:07:12 +01:00
Jiaxun Yang
87fcfa7b7f MIPS: Loongson64: Add generic dts
Add generic device dts for Loongson-3 devices.
They are currently almost identical but will be different later.
Some PCH devices like PCI Host Bridge is still enabled by platform
code for now.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Co-developed-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-03-25 16:07:12 +01:00
Jiaxun Yang
bfe9a29996 dt-bindings: mips: Add loongson boards
Prepare for later dts.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Co-developed-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-03-25 16:07:11 +01:00
Jiaxun Yang
8bec3875c5 MIPS: Loongson64: Drop legacy IRQ code
We've made generic irqchip drivers for Loongson-3 platform, it's time
to say goodbye to these legacy code.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Co-developed-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-03-25 16:07:11 +01:00
Eric W. Biederman
4b871ce26a Merged 'Infrastructure to allow fixing exec deadlocks' from Bernd Edlinger
This is an infrastructure change that makes way for fixing this issue.
Each patch was already posted previously so this is just a cleanup of
the original mailing list thread(s) which got out of control by now.

Everything started here:
https://lore.kernel.org/lkml/AM6PR03MB5170B06F3A2B75EFB98D071AE4E60@AM6PR03MB5170.eurprd03.prod.outlook.com/

I added reviewed-by tags from the mailing list threads, except when
withdrawn.

It took a lot longer than expected to collect everything from the
mailinglist threads, since several commit messages have been infected
with typos, and they got fixed without a new patch version.

- Correct the point of no return.
- Add two new mutexes to replace cred_guard_mutex.
- Fix each use of cred_guard_mutex.
- Update documentation.
- Add a test case.

-- EWB Removed the last 2 patches they need more work

Bernd Edlinger (9):
      exec: Fix a deadlock in strace
      selftests/ptrace: add test cases for dead-locks
      mm: docs: Fix a comment in process_vm_rw_core
      kernel: doc: remove outdated comment cred.c
      kernel/kcmp.c: Use new infrastructure to fix deadlocks in execve
      proc: Use new infrastructure to fix deadlocks in execve
      proc: io_accounting: Use new infrastructure to fix deadlocks in execve
      perf: Use new infrastructure to fix deadlocks in execve
      pidfd: Use new infrastructure to fix deadlocks in execve

Eric W. Biederman (5):
      exec: Only compute current once in flush_old_exec
      exec: Factor unshare_sighand out of de_thread and call it separately
      exec: Move cleanup of posix timers on exec out of de_thread
      exec: Move exec_mmap right after de_thread in flush_old_exec
      exec: Add exec_update_mutex to replace cred_guard_mutex

 fs/exec.c                                 | 78 +++++++++++++++++++---------
 fs/proc/base.c                            | 10 ++--
 include/linux/binfmts.h                   |  8 ++-
 include/linux/sched/signal.h              |  9 +++-
 init/init_task.c                          |  1 +
 kernel/cred.c                             |  2 -
 kernel/events/core.c                      | 12 ++---
 kernel/fork.c                             |  5 +-
 kernel/kcmp.c                             |  8 +--
 kernel/pid.c                              |  4 +-
 mm/process_vm_access.c                    |  2 +-
 tools/testing/selftests/ptrace/Makefile   |  4 +-
 tools/testing/selftests/ptrace/vmaccess.c | 86 +++++++++++++++++++++++++++++++
 13 files changed, 179 insertions(+), 50 deletions(-)

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
2020-03-25 10:07:09 -05:00
Bernd Edlinger
501f9328bf pidfd: Use new infrastructure to fix deadlocks in execve
This changes __pidfd_fget to use the new exec_update_mutex
instead of cred_guard_mutex.

This should be safe, as the credentials do not change
before exec_update_mutex is locked.  Therefore whatever
file access is possible with holding the cred_guard_mutex
here is also possbile with the exec_update_mutex.

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
2020-03-25 10:04:01 -05:00
Bernd Edlinger
6914303824 perf: Use new infrastructure to fix deadlocks in execve
This changes perf_event_set_clock to use the new exec_update_mutex
instead of cred_guard_mutex.

This should be safe, as the credentials are only used for reading.

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
2020-03-25 10:04:01 -05:00
Bernd Edlinger
76518d3798 proc: io_accounting: Use new infrastructure to fix deadlocks in execve
This changes do_io_accounting to use the new exec_update_mutex
instead of cred_guard_mutex.

This fixes possible deadlocks when the trace is accessing
/proc/$pid/io for instance.

This should be safe, as the credentials are only used for reading.

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
2020-03-25 10:04:01 -05:00
Bernd Edlinger
2db9dbf71b proc: Use new infrastructure to fix deadlocks in execve
This changes lock_trace to use the new exec_update_mutex
instead of cred_guard_mutex.

This fixes possible deadlocks when the trace is accessing
/proc/$pid/stack for instance.

This should be safe, as the credentials are only used for reading,
and task->mm is updated on execve under the new exec_update_mutex.

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
2020-03-25 10:04:01 -05:00
Bernd Edlinger
454e3126cb kernel/kcmp.c: Use new infrastructure to fix deadlocks in execve
This changes kcmp_epoll_target to use the new exec_update_mutex
instead of cred_guard_mutex.

This should be safe, as the credentials are only used for reading,
and furthermore ->mm and ->sighand are updated on execve,
but only under the new exec_update_mutex.

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
2020-03-25 10:04:01 -05:00
Bernd Edlinger
aa884c1131 kernel: doc: remove outdated comment cred.c
This removes an outdated comment in prepare_kernel_cred.

There is no "cred_replace_mutex" any more, so the comment must
go away.

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
2020-03-25 10:04:01 -05:00
Bernd Edlinger
8d09db80ef mm: docs: Fix a comment in process_vm_rw_core
This removes a duplicate "a" in the comment in process_vm_rw_core.

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
2020-03-25 10:04:01 -05:00