Merge branch 'akpm' (patches from Andrew)
Merge misc fixes from Andrew Morton: "14 patches. Subsystems affected by this patch series: mm (kasan, gup, pagecache, and kfence), MAINTAINERS, mailmap, nds32, gcov, ocfs2, ia64, and lib" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: lib: fix kconfig dependency on ARCH_WANT_FRAME_POINTERS kfence, x86: fix preemptible warning on KPTI-enabled systems lib/test_kasan_module.c: suppress unused var warning kasan: fix conflict with page poisoning fs: direct-io: fix missing sdio->boundary ia64: fix user_stack_pointer() for ptrace() ocfs2: fix deadlock between setattr and dio_end_io_write gcov: re-fix clang-11+ support nds32: flush_dcache_page: use page_mapping_file to avoid races with swapoff mm/gup: check page posion status for coredump. .mailmap: fix old email addresses mailmap: update email address for Jordan Crouse treewide: change my e-mail address, fix my name MAINTAINERS: update CZ.NIC's Turris information
This commit is contained in:
commit
adb2c4174f
7
.mailmap
7
.mailmap
@ -168,6 +168,7 @@ Johan Hovold <johan@kernel.org> <jhovold@gmail.com>
|
|||||||
Johan Hovold <johan@kernel.org> <johan@hovoldconsulting.com>
|
Johan Hovold <johan@kernel.org> <johan@hovoldconsulting.com>
|
||||||
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
|
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
|
||||||
John Stultz <johnstul@us.ibm.com>
|
John Stultz <johnstul@us.ibm.com>
|
||||||
|
Jordan Crouse <jordan@cosmicpenguin.net> <jcrouse@codeaurora.org>
|
||||||
<josh@joshtriplett.org> <josh@freedesktop.org>
|
<josh@joshtriplett.org> <josh@freedesktop.org>
|
||||||
<josh@joshtriplett.org> <josh@kernel.org>
|
<josh@joshtriplett.org> <josh@kernel.org>
|
||||||
<josh@joshtriplett.org> <josht@linux.vnet.ibm.com>
|
<josh@joshtriplett.org> <josht@linux.vnet.ibm.com>
|
||||||
@ -253,8 +254,14 @@ Morten Welinder <welinder@anemone.rentec.com>
|
|||||||
Morten Welinder <welinder@darter.rentec.com>
|
Morten Welinder <welinder@darter.rentec.com>
|
||||||
Morten Welinder <welinder@troll.com>
|
Morten Welinder <welinder@troll.com>
|
||||||
Mythri P K <mythripk@ti.com>
|
Mythri P K <mythripk@ti.com>
|
||||||
|
Nadia Yvette Chambers <nyc@holomorphy.com> William Lee Irwin III <wli@holomorphy.com>
|
||||||
Nathan Chancellor <nathan@kernel.org> <natechancellor@gmail.com>
|
Nathan Chancellor <nathan@kernel.org> <natechancellor@gmail.com>
|
||||||
Nguyen Anh Quynh <aquynh@gmail.com>
|
Nguyen Anh Quynh <aquynh@gmail.com>
|
||||||
|
Nicholas Piggin <npiggin@gmail.com> <npiggen@suse.de>
|
||||||
|
Nicholas Piggin <npiggin@gmail.com> <npiggin@kernel.dk>
|
||||||
|
Nicholas Piggin <npiggin@gmail.com> <npiggin@suse.de>
|
||||||
|
Nicholas Piggin <npiggin@gmail.com> <nickpiggin@yahoo.com.au>
|
||||||
|
Nicholas Piggin <npiggin@gmail.com> <piggin@cyberone.com.au>
|
||||||
Nicolas Ferre <nicolas.ferre@microchip.com> <nicolas.ferre@atmel.com>
|
Nicolas Ferre <nicolas.ferre@microchip.com> <nicolas.ferre@atmel.com>
|
||||||
Nicolas Pitre <nico@fluxnic.net> <nicolas.pitre@linaro.org>
|
Nicolas Pitre <nico@fluxnic.net> <nicolas.pitre@linaro.org>
|
||||||
Nicolas Pitre <nico@fluxnic.net> <nico@linaro.org>
|
Nicolas Pitre <nico@fluxnic.net> <nico@linaro.org>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
What: /sys/kernel/debug/moxtet/input
|
What: /sys/kernel/debug/moxtet/input
|
||||||
Date: March 2019
|
Date: March 2019
|
||||||
KernelVersion: 5.3
|
KernelVersion: 5.3
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) Read input from the shift registers, in hexadecimal.
|
Description: (Read) Read input from the shift registers, in hexadecimal.
|
||||||
Returns N+1 bytes, where N is the number of Moxtet connected
|
Returns N+1 bytes, where N is the number of Moxtet connected
|
||||||
modules. The first byte is from the CPU board itself.
|
modules. The first byte is from the CPU board itself.
|
||||||
@ -19,7 +19,7 @@ Description: (Read) Read input from the shift registers, in hexadecimal.
|
|||||||
What: /sys/kernel/debug/moxtet/output
|
What: /sys/kernel/debug/moxtet/output
|
||||||
Date: March 2019
|
Date: March 2019
|
||||||
KernelVersion: 5.3
|
KernelVersion: 5.3
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (RW) Read last written value to the shift registers, in
|
Description: (RW) Read last written value to the shift registers, in
|
||||||
hexadecimal, or write values to the shift registers, also
|
hexadecimal, or write values to the shift registers, also
|
||||||
in hexadecimal.
|
in hexadecimal.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
What: /sys/kernel/debug/turris-mox-rwtm/do_sign
|
What: /sys/kernel/debug/turris-mox-rwtm/do_sign
|
||||||
Date: Jun 2020
|
Date: Jun 2020
|
||||||
KernelVersion: 5.8
|
KernelVersion: 5.8
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description:
|
Description:
|
||||||
|
|
||||||
======= ===========================================================
|
======= ===========================================================
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_description
|
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_description
|
||||||
Date: March 2019
|
Date: March 2019
|
||||||
KernelVersion: 5.3
|
KernelVersion: 5.3
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) Moxtet module description. Format: string
|
Description: (Read) Moxtet module description. Format: string
|
||||||
|
|
||||||
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_id
|
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_id
|
||||||
Date: March 2019
|
Date: March 2019
|
||||||
KernelVersion: 5.3
|
KernelVersion: 5.3
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) Moxtet module ID. Format: %x
|
Description: (Read) Moxtet module ID. Format: %x
|
||||||
|
|
||||||
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_name
|
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_name
|
||||||
Date: March 2019
|
Date: March 2019
|
||||||
KernelVersion: 5.3
|
KernelVersion: 5.3
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) Moxtet module name. Format: string
|
Description: (Read) Moxtet module name. Format: string
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
What: /sys/class/leds/<led>/device/brightness
|
What: /sys/class/leds/<led>/device/brightness
|
||||||
Date: July 2020
|
Date: July 2020
|
||||||
KernelVersion: 5.9
|
KernelVersion: 5.9
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (RW) On the front panel of the Turris Omnia router there is also
|
Description: (RW) On the front panel of the Turris Omnia router there is also
|
||||||
a button which can be used to control the intensity of all the
|
a button which can be used to control the intensity of all the
|
||||||
LEDs at once, so that if they are too bright, user can dim them.
|
LEDs at once, so that if they are too bright, user can dim them.
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
What: /sys/firmware/turris-mox-rwtm/board_version
|
What: /sys/firmware/turris-mox-rwtm/board_version
|
||||||
Date: August 2019
|
Date: August 2019
|
||||||
KernelVersion: 5.4
|
KernelVersion: 5.4
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) Board version burned into eFuses of this Turris Mox board.
|
Description: (Read) Board version burned into eFuses of this Turris Mox board.
|
||||||
Format: %i
|
Format: %i
|
||||||
|
|
||||||
What: /sys/firmware/turris-mox-rwtm/mac_address*
|
What: /sys/firmware/turris-mox-rwtm/mac_address*
|
||||||
Date: August 2019
|
Date: August 2019
|
||||||
KernelVersion: 5.4
|
KernelVersion: 5.4
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) MAC addresses burned into eFuses of this Turris Mox board.
|
Description: (Read) MAC addresses burned into eFuses of this Turris Mox board.
|
||||||
Format: %pM
|
Format: %pM
|
||||||
|
|
||||||
What: /sys/firmware/turris-mox-rwtm/pubkey
|
What: /sys/firmware/turris-mox-rwtm/pubkey
|
||||||
Date: August 2019
|
Date: August 2019
|
||||||
KernelVersion: 5.4
|
KernelVersion: 5.4
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) ECDSA public key (in pubkey hex compressed form) computed
|
Description: (Read) ECDSA public key (in pubkey hex compressed form) computed
|
||||||
as pair to the ECDSA private key burned into eFuses of this
|
as pair to the ECDSA private key burned into eFuses of this
|
||||||
Turris Mox Board.
|
Turris Mox Board.
|
||||||
@ -24,7 +24,7 @@ Description: (Read) ECDSA public key (in pubkey hex compressed form) computed
|
|||||||
What: /sys/firmware/turris-mox-rwtm/ram_size
|
What: /sys/firmware/turris-mox-rwtm/ram_size
|
||||||
Date: August 2019
|
Date: August 2019
|
||||||
KernelVersion: 5.4
|
KernelVersion: 5.4
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) RAM size in MiB of this Turris Mox board as was detected
|
Description: (Read) RAM size in MiB of this Turris Mox board as was detected
|
||||||
during manufacturing and burned into eFuses. Can be 512 or 1024.
|
during manufacturing and burned into eFuses. Can be 512 or 1024.
|
||||||
Format: %i
|
Format: %i
|
||||||
@ -32,6 +32,6 @@ Description: (Read) RAM size in MiB of this Turris Mox board as was detected
|
|||||||
What: /sys/firmware/turris-mox-rwtm/serial_number
|
What: /sys/firmware/turris-mox-rwtm/serial_number
|
||||||
Date: August 2019
|
Date: August 2019
|
||||||
KernelVersion: 5.4
|
KernelVersion: 5.4
|
||||||
Contact: Marek Behún <marek.behun@nic.cz>
|
Contact: Marek Behún <kabel@kernel.org>
|
||||||
Description: (Read) Serial number burned into eFuses of this Turris Mox device.
|
Description: (Read) Serial number burned into eFuses of this Turris Mox device.
|
||||||
Format: %016X
|
Format: %016X
|
||||||
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: CZ.NIC's Turris Omnia LEDs driver
|
title: CZ.NIC's Turris Omnia LEDs driver
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Marek Behún <marek.behun@nic.cz>
|
- Marek Behún <kabel@kernel.org>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
This module adds support for the RGB LEDs found on the front panel of the
|
This module adds support for the RGB LEDs found on the front panel of the
|
||||||
|
13
MAINTAINERS
13
MAINTAINERS
@ -1790,19 +1790,26 @@ F: drivers/net/ethernet/cortina/
|
|||||||
F: drivers/pinctrl/pinctrl-gemini.c
|
F: drivers/pinctrl/pinctrl-gemini.c
|
||||||
F: drivers/rtc/rtc-ftrtc010.c
|
F: drivers/rtc/rtc-ftrtc010.c
|
||||||
|
|
||||||
ARM/CZ.NIC TURRIS MOX SUPPORT
|
ARM/CZ.NIC TURRIS SUPPORT
|
||||||
M: Marek Behun <marek.behun@nic.cz>
|
M: Marek Behun <kabel@kernel.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
W: http://mox.turris.cz
|
W: https://www.turris.cz/
|
||||||
F: Documentation/ABI/testing/debugfs-moxtet
|
F: Documentation/ABI/testing/debugfs-moxtet
|
||||||
F: Documentation/ABI/testing/sysfs-bus-moxtet-devices
|
F: Documentation/ABI/testing/sysfs-bus-moxtet-devices
|
||||||
F: Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
|
F: Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
|
||||||
F: Documentation/devicetree/bindings/bus/moxtet.txt
|
F: Documentation/devicetree/bindings/bus/moxtet.txt
|
||||||
F: Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.txt
|
F: Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.txt
|
||||||
F: Documentation/devicetree/bindings/gpio/gpio-moxtet.txt
|
F: Documentation/devicetree/bindings/gpio/gpio-moxtet.txt
|
||||||
|
F: Documentation/devicetree/bindings/leds/cznic,turris-omnia-leds.yaml
|
||||||
|
F: Documentation/devicetree/bindings/watchdog/armada-37xx-wdt.txt
|
||||||
F: drivers/bus/moxtet.c
|
F: drivers/bus/moxtet.c
|
||||||
F: drivers/firmware/turris-mox-rwtm.c
|
F: drivers/firmware/turris-mox-rwtm.c
|
||||||
|
F: drivers/leds/leds-turris-omnia.c
|
||||||
|
F: drivers/mailbox/armada-37xx-rwtm-mailbox.c
|
||||||
F: drivers/gpio/gpio-moxtet.c
|
F: drivers/gpio/gpio-moxtet.c
|
||||||
|
F: drivers/watchdog/armada_37xx_wdt.c
|
||||||
|
F: include/dt-bindings/bus/moxtet.h
|
||||||
|
F: include/linux/armada-37xx-rwtm-mailbox.h
|
||||||
F: include/linux/moxtet.h
|
F: include/linux/moxtet.h
|
||||||
|
|
||||||
ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6)
|
ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
/*
|
/*
|
||||||
* Device Tree file for CZ.NIC Turris Mox Board
|
* Device Tree file for CZ.NIC Turris Mox Board
|
||||||
* 2019 by Marek Behun <marek.behun@nic.cz>
|
* 2019 by Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
@ -54,8 +54,7 @@
|
|||||||
|
|
||||||
static inline unsigned long user_stack_pointer(struct pt_regs *regs)
|
static inline unsigned long user_stack_pointer(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
/* FIXME: should this be bspstore + nr_dirty regs? */
|
return regs->r12;
|
||||||
return regs->ar_bspstore;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int is_syscall_success(struct pt_regs *regs)
|
static inline int is_syscall_success(struct pt_regs *regs)
|
||||||
@ -79,11 +78,6 @@ static inline long regs_return_value(struct pt_regs *regs)
|
|||||||
unsigned long __ip = instruction_pointer(regs); \
|
unsigned long __ip = instruction_pointer(regs); \
|
||||||
(__ip & ~3UL) + ((__ip & 3UL) << 2); \
|
(__ip & ~3UL) + ((__ip & 3UL) << 2); \
|
||||||
})
|
})
|
||||||
/*
|
|
||||||
* Why not default? Because user_stack_pointer() on ia64 gives register
|
|
||||||
* stack backing store instead...
|
|
||||||
*/
|
|
||||||
#define current_user_stack_pointer() (current_pt_regs()->r12)
|
|
||||||
|
|
||||||
/* given a pointer to a task_struct, return the user's pt_regs */
|
/* given a pointer to a task_struct, return the user's pt_regs */
|
||||||
# define task_pt_regs(t) (((struct pt_regs *) ((char *) (t) + IA64_STK_OFFSET)) - 1)
|
# define task_pt_regs(t) (((struct pt_regs *) ((char *) (t) + IA64_STK_OFFSET)) - 1)
|
||||||
|
@ -238,7 +238,7 @@ void flush_dcache_page(struct page *page)
|
|||||||
{
|
{
|
||||||
struct address_space *mapping;
|
struct address_space *mapping;
|
||||||
|
|
||||||
mapping = page_mapping(page);
|
mapping = page_mapping_file(page);
|
||||||
if (mapping && !mapping_mapped(mapping))
|
if (mapping && !mapping_mapped(mapping))
|
||||||
set_bit(PG_dcache_dirty, &page->flags);
|
set_bit(PG_dcache_dirty, &page->flags);
|
||||||
else {
|
else {
|
||||||
|
@ -56,8 +56,13 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
|
|||||||
else
|
else
|
||||||
set_pte(pte, __pte(pte_val(*pte) | _PAGE_PRESENT));
|
set_pte(pte, __pte(pte_val(*pte) | _PAGE_PRESENT));
|
||||||
|
|
||||||
/* Flush this CPU's TLB. */
|
/*
|
||||||
|
* Flush this CPU's TLB, assuming whoever did the allocation/free is
|
||||||
|
* likely to continue running on this CPU.
|
||||||
|
*/
|
||||||
|
preempt_disable();
|
||||||
flush_tlb_one_kernel(addr);
|
flush_tlb_one_kernel(addr);
|
||||||
|
preempt_enable();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Turris Mox module configuration bus driver
|
* Turris Mox module configuration bus driver
|
||||||
*
|
*
|
||||||
* Copyright (C) 2019 Marek Behun <marek.behun@nic.cz>
|
* Copyright (C) 2019 Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dt-bindings/bus/moxtet.h>
|
#include <dt-bindings/bus/moxtet.h>
|
||||||
@ -879,6 +879,6 @@ static void __exit moxtet_exit(void)
|
|||||||
}
|
}
|
||||||
module_exit(moxtet_exit);
|
module_exit(moxtet_exit);
|
||||||
|
|
||||||
MODULE_AUTHOR("Marek Behun <marek.behun@nic.cz>");
|
MODULE_AUTHOR("Marek Behun <kabel@kernel.org>");
|
||||||
MODULE_DESCRIPTION("CZ.NIC's Turris Mox module configuration bus");
|
MODULE_DESCRIPTION("CZ.NIC's Turris Mox module configuration bus");
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Turris Mox rWTM firmware driver
|
* Turris Mox rWTM firmware driver
|
||||||
*
|
*
|
||||||
* Copyright (C) 2019 Marek Behun <marek.behun@nic.cz>
|
* Copyright (C) 2019 Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/armada-37xx-rwtm-mailbox.h>
|
#include <linux/armada-37xx-rwtm-mailbox.h>
|
||||||
@ -547,4 +547,4 @@ module_platform_driver(turris_mox_rwtm_driver);
|
|||||||
|
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
MODULE_DESCRIPTION("Turris Mox rWTM firmware driver");
|
MODULE_DESCRIPTION("Turris Mox rWTM firmware driver");
|
||||||
MODULE_AUTHOR("Marek Behun <marek.behun@nic.cz>");
|
MODULE_AUTHOR("Marek Behun <kabel@kernel.org>");
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Turris Mox Moxtet GPIO expander
|
* Turris Mox Moxtet GPIO expander
|
||||||
*
|
*
|
||||||
* Copyright (C) 2018 Marek Behun <marek.behun@nic.cz>
|
* Copyright (C) 2018 Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
@ -174,6 +174,6 @@ static struct moxtet_driver moxtet_gpio_driver = {
|
|||||||
};
|
};
|
||||||
module_moxtet_driver(moxtet_gpio_driver);
|
module_moxtet_driver(moxtet_gpio_driver);
|
||||||
|
|
||||||
MODULE_AUTHOR("Marek Behun <marek.behun@nic.cz>");
|
MODULE_AUTHOR("Marek Behun <kabel@kernel.org>");
|
||||||
MODULE_DESCRIPTION("Turris Mox Moxtet GPIO expander");
|
MODULE_DESCRIPTION("Turris Mox Moxtet GPIO expander");
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* CZ.NIC's Turris Omnia LEDs driver
|
* CZ.NIC's Turris Omnia LEDs driver
|
||||||
*
|
*
|
||||||
* 2020 by Marek Behun <marek.behun@nic.cz>
|
* 2020 by Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/i2c.h>
|
#include <linux/i2c.h>
|
||||||
@ -287,6 +287,6 @@ static struct i2c_driver omnia_leds_driver = {
|
|||||||
|
|
||||||
module_i2c_driver(omnia_leds_driver);
|
module_i2c_driver(omnia_leds_driver);
|
||||||
|
|
||||||
MODULE_AUTHOR("Marek Behun <marek.behun@nic.cz>");
|
MODULE_AUTHOR("Marek Behun <kabel@kernel.org>");
|
||||||
MODULE_DESCRIPTION("CZ.NIC's Turris Omnia LEDs");
|
MODULE_DESCRIPTION("CZ.NIC's Turris Omnia LEDs");
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* rWTM BIU Mailbox driver for Armada 37xx
|
* rWTM BIU Mailbox driver for Armada 37xx
|
||||||
*
|
*
|
||||||
* Author: Marek Behun <marek.behun@nic.cz>
|
* Author: Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
@ -203,4 +203,4 @@ module_platform_driver(armada_37xx_mbox_driver);
|
|||||||
|
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
MODULE_DESCRIPTION("rWTM BIU Mailbox driver for Armada 37xx");
|
MODULE_DESCRIPTION("rWTM BIU Mailbox driver for Armada 37xx");
|
||||||
MODULE_AUTHOR("Marek Behun <marek.behun@nic.cz>");
|
MODULE_AUTHOR("Marek Behun <kabel@kernel.org>");
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Watchdog driver for Marvell Armada 37xx SoCs
|
* Watchdog driver for Marvell Armada 37xx SoCs
|
||||||
*
|
*
|
||||||
* Author: Marek Behun <marek.behun@nic.cz>
|
* Author: Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
@ -366,7 +366,7 @@ static struct platform_driver armada_37xx_wdt_driver = {
|
|||||||
|
|
||||||
module_platform_driver(armada_37xx_wdt_driver);
|
module_platform_driver(armada_37xx_wdt_driver);
|
||||||
|
|
||||||
MODULE_AUTHOR("Marek Behun <marek.behun@nic.cz>");
|
MODULE_AUTHOR("Marek Behun <kabel@kernel.org>");
|
||||||
MODULE_DESCRIPTION("Armada 37xx CPU Watchdog");
|
MODULE_DESCRIPTION("Armada 37xx CPU Watchdog");
|
||||||
|
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
|
@ -812,6 +812,7 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page,
|
|||||||
struct buffer_head *map_bh)
|
struct buffer_head *map_bh)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
int boundary = sdio->boundary; /* dio_send_cur_page may clear it */
|
||||||
|
|
||||||
if (dio->op == REQ_OP_WRITE) {
|
if (dio->op == REQ_OP_WRITE) {
|
||||||
/*
|
/*
|
||||||
@ -850,10 +851,10 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page,
|
|||||||
sdio->cur_page_fs_offset = sdio->block_in_file << sdio->blkbits;
|
sdio->cur_page_fs_offset = sdio->block_in_file << sdio->blkbits;
|
||||||
out:
|
out:
|
||||||
/*
|
/*
|
||||||
* If sdio->boundary then we want to schedule the IO now to
|
* If boundary then we want to schedule the IO now to
|
||||||
* avoid metadata seeks.
|
* avoid metadata seeks.
|
||||||
*/
|
*/
|
||||||
if (sdio->boundary) {
|
if (boundary) {
|
||||||
ret = dio_send_cur_page(dio, sdio, map_bh);
|
ret = dio_send_cur_page(dio, sdio, map_bh);
|
||||||
if (sdio->bio)
|
if (sdio->bio)
|
||||||
dio_bio_submit(dio, sdio);
|
dio_bio_submit(dio, sdio);
|
||||||
|
@ -2295,7 +2295,7 @@ static int ocfs2_dio_end_io_write(struct inode *inode,
|
|||||||
struct ocfs2_alloc_context *meta_ac = NULL;
|
struct ocfs2_alloc_context *meta_ac = NULL;
|
||||||
handle_t *handle = NULL;
|
handle_t *handle = NULL;
|
||||||
loff_t end = offset + bytes;
|
loff_t end = offset + bytes;
|
||||||
int ret = 0, credits = 0, locked = 0;
|
int ret = 0, credits = 0;
|
||||||
|
|
||||||
ocfs2_init_dealloc_ctxt(&dealloc);
|
ocfs2_init_dealloc_ctxt(&dealloc);
|
||||||
|
|
||||||
@ -2306,13 +2306,6 @@ static int ocfs2_dio_end_io_write(struct inode *inode,
|
|||||||
!dwc->dw_orphaned)
|
!dwc->dw_orphaned)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* ocfs2_file_write_iter will get i_mutex, so we need not lock if we
|
|
||||||
* are in that context. */
|
|
||||||
if (dwc->dw_writer_pid != task_pid_nr(current)) {
|
|
||||||
inode_lock(inode);
|
|
||||||
locked = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = ocfs2_inode_lock(inode, &di_bh, 1);
|
ret = ocfs2_inode_lock(inode, &di_bh, 1);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
mlog_errno(ret);
|
mlog_errno(ret);
|
||||||
@ -2393,8 +2386,6 @@ out:
|
|||||||
if (meta_ac)
|
if (meta_ac)
|
||||||
ocfs2_free_alloc_context(meta_ac);
|
ocfs2_free_alloc_context(meta_ac);
|
||||||
ocfs2_run_deallocs(osb, &dealloc);
|
ocfs2_run_deallocs(osb, &dealloc);
|
||||||
if (locked)
|
|
||||||
inode_unlock(inode);
|
|
||||||
ocfs2_dio_free_write_ctx(inode, dwc);
|
ocfs2_dio_free_write_ctx(inode, dwc);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1245,22 +1245,24 @@ int ocfs2_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
|
|||||||
goto bail_unlock;
|
goto bail_unlock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
down_write(&OCFS2_I(inode)->ip_alloc_sem);
|
||||||
handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS +
|
handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS +
|
||||||
2 * ocfs2_quota_trans_credits(sb));
|
2 * ocfs2_quota_trans_credits(sb));
|
||||||
if (IS_ERR(handle)) {
|
if (IS_ERR(handle)) {
|
||||||
status = PTR_ERR(handle);
|
status = PTR_ERR(handle);
|
||||||
mlog_errno(status);
|
mlog_errno(status);
|
||||||
goto bail_unlock;
|
goto bail_unlock_alloc;
|
||||||
}
|
}
|
||||||
status = __dquot_transfer(inode, transfer_to);
|
status = __dquot_transfer(inode, transfer_to);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
goto bail_commit;
|
goto bail_commit;
|
||||||
} else {
|
} else {
|
||||||
|
down_write(&OCFS2_I(inode)->ip_alloc_sem);
|
||||||
handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
|
handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
|
||||||
if (IS_ERR(handle)) {
|
if (IS_ERR(handle)) {
|
||||||
status = PTR_ERR(handle);
|
status = PTR_ERR(handle);
|
||||||
mlog_errno(status);
|
mlog_errno(status);
|
||||||
goto bail_unlock;
|
goto bail_unlock_alloc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1273,6 +1275,8 @@ int ocfs2_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
|
|||||||
|
|
||||||
bail_commit:
|
bail_commit:
|
||||||
ocfs2_commit_trans(osb, handle);
|
ocfs2_commit_trans(osb, handle);
|
||||||
|
bail_unlock_alloc:
|
||||||
|
up_write(&OCFS2_I(inode)->ip_alloc_sem);
|
||||||
bail_unlock:
|
bail_unlock:
|
||||||
if (status && inode_locked) {
|
if (status && inode_locked) {
|
||||||
ocfs2_inode_unlock_tracker(inode, 1, &oh, had_lock);
|
ocfs2_inode_unlock_tracker(inode, 1, &oh, had_lock);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Constant for device tree bindings for Turris Mox module configuration bus
|
* Constant for device tree bindings for Turris Mox module configuration bus
|
||||||
*
|
*
|
||||||
* Copyright (C) 2019 Marek Behun <marek.behun@nic.cz>
|
* Copyright (C) 2019 Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _DT_BINDINGS_BUS_MOXTET_H
|
#ifndef _DT_BINDINGS_BUS_MOXTET_H
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* rWTM BIU Mailbox driver for Armada 37xx
|
* rWTM BIU Mailbox driver for Armada 37xx
|
||||||
*
|
*
|
||||||
* Author: Marek Behun <marek.behun@nic.cz>
|
* Author: Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LINUX_ARMADA_37XX_RWTM_MAILBOX_H_
|
#ifndef _LINUX_ARMADA_37XX_RWTM_MAILBOX_H_
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Turris Mox module configuration bus driver
|
* Turris Mox module configuration bus driver
|
||||||
*
|
*
|
||||||
* Copyright (C) 2019 Marek Behun <marek.behun@nic.cz>
|
* Copyright (C) 2019 Marek Behún <kabel@kernel.org>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __LINUX_MOXTET_H
|
#ifndef __LINUX_MOXTET_H
|
||||||
|
@ -70,7 +70,9 @@ struct gcov_fn_info {
|
|||||||
|
|
||||||
u32 ident;
|
u32 ident;
|
||||||
u32 checksum;
|
u32 checksum;
|
||||||
|
#if CONFIG_CLANG_VERSION < 110000
|
||||||
u8 use_extra_checksum;
|
u8 use_extra_checksum;
|
||||||
|
#endif
|
||||||
u32 cfg_checksum;
|
u32 cfg_checksum;
|
||||||
|
|
||||||
u32 num_counters;
|
u32 num_counters;
|
||||||
@ -145,10 +147,8 @@ void llvm_gcda_emit_function(u32 ident, const char *function_name,
|
|||||||
|
|
||||||
list_add_tail(&info->head, ¤t_info->functions);
|
list_add_tail(&info->head, ¤t_info->functions);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(llvm_gcda_emit_function);
|
|
||||||
#else
|
#else
|
||||||
void llvm_gcda_emit_function(u32 ident, u32 func_checksum,
|
void llvm_gcda_emit_function(u32 ident, u32 func_checksum, u32 cfg_checksum)
|
||||||
u8 use_extra_checksum, u32 cfg_checksum)
|
|
||||||
{
|
{
|
||||||
struct gcov_fn_info *info = kzalloc(sizeof(*info), GFP_KERNEL);
|
struct gcov_fn_info *info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||||
|
|
||||||
@ -158,12 +158,11 @@ void llvm_gcda_emit_function(u32 ident, u32 func_checksum,
|
|||||||
INIT_LIST_HEAD(&info->head);
|
INIT_LIST_HEAD(&info->head);
|
||||||
info->ident = ident;
|
info->ident = ident;
|
||||||
info->checksum = func_checksum;
|
info->checksum = func_checksum;
|
||||||
info->use_extra_checksum = use_extra_checksum;
|
|
||||||
info->cfg_checksum = cfg_checksum;
|
info->cfg_checksum = cfg_checksum;
|
||||||
list_add_tail(&info->head, ¤t_info->functions);
|
list_add_tail(&info->head, ¤t_info->functions);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(llvm_gcda_emit_function);
|
|
||||||
#endif
|
#endif
|
||||||
|
EXPORT_SYMBOL(llvm_gcda_emit_function);
|
||||||
|
|
||||||
void llvm_gcda_emit_arcs(u32 num_counters, u64 *counters)
|
void llvm_gcda_emit_arcs(u32 num_counters, u64 *counters)
|
||||||
{
|
{
|
||||||
@ -293,11 +292,16 @@ int gcov_info_is_compatible(struct gcov_info *info1, struct gcov_info *info2)
|
|||||||
!list_is_last(&fn_ptr2->head, &info2->functions)) {
|
!list_is_last(&fn_ptr2->head, &info2->functions)) {
|
||||||
if (fn_ptr1->checksum != fn_ptr2->checksum)
|
if (fn_ptr1->checksum != fn_ptr2->checksum)
|
||||||
return false;
|
return false;
|
||||||
|
#if CONFIG_CLANG_VERSION < 110000
|
||||||
if (fn_ptr1->use_extra_checksum != fn_ptr2->use_extra_checksum)
|
if (fn_ptr1->use_extra_checksum != fn_ptr2->use_extra_checksum)
|
||||||
return false;
|
return false;
|
||||||
if (fn_ptr1->use_extra_checksum &&
|
if (fn_ptr1->use_extra_checksum &&
|
||||||
fn_ptr1->cfg_checksum != fn_ptr2->cfg_checksum)
|
fn_ptr1->cfg_checksum != fn_ptr2->cfg_checksum)
|
||||||
return false;
|
return false;
|
||||||
|
#else
|
||||||
|
if (fn_ptr1->cfg_checksum != fn_ptr2->cfg_checksum)
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
fn_ptr1 = list_next_entry(fn_ptr1, head);
|
fn_ptr1 = list_next_entry(fn_ptr1, head);
|
||||||
fn_ptr2 = list_next_entry(fn_ptr2, head);
|
fn_ptr2 = list_next_entry(fn_ptr2, head);
|
||||||
}
|
}
|
||||||
@ -529,17 +533,22 @@ static size_t convert_to_gcda(char *buffer, struct gcov_info *info)
|
|||||||
|
|
||||||
list_for_each_entry(fi_ptr, &info->functions, head) {
|
list_for_each_entry(fi_ptr, &info->functions, head) {
|
||||||
u32 i;
|
u32 i;
|
||||||
u32 len = 2;
|
|
||||||
|
|
||||||
if (fi_ptr->use_extra_checksum)
|
|
||||||
len++;
|
|
||||||
|
|
||||||
pos += store_gcov_u32(buffer, pos, GCOV_TAG_FUNCTION);
|
pos += store_gcov_u32(buffer, pos, GCOV_TAG_FUNCTION);
|
||||||
pos += store_gcov_u32(buffer, pos, len);
|
#if CONFIG_CLANG_VERSION < 110000
|
||||||
|
pos += store_gcov_u32(buffer, pos,
|
||||||
|
fi_ptr->use_extra_checksum ? 3 : 2);
|
||||||
|
#else
|
||||||
|
pos += store_gcov_u32(buffer, pos, 3);
|
||||||
|
#endif
|
||||||
pos += store_gcov_u32(buffer, pos, fi_ptr->ident);
|
pos += store_gcov_u32(buffer, pos, fi_ptr->ident);
|
||||||
pos += store_gcov_u32(buffer, pos, fi_ptr->checksum);
|
pos += store_gcov_u32(buffer, pos, fi_ptr->checksum);
|
||||||
|
#if CONFIG_CLANG_VERSION < 110000
|
||||||
if (fi_ptr->use_extra_checksum)
|
if (fi_ptr->use_extra_checksum)
|
||||||
pos += store_gcov_u32(buffer, pos, fi_ptr->cfg_checksum);
|
pos += store_gcov_u32(buffer, pos, fi_ptr->cfg_checksum);
|
||||||
|
#else
|
||||||
|
pos += store_gcov_u32(buffer, pos, fi_ptr->cfg_checksum);
|
||||||
|
#endif
|
||||||
|
|
||||||
pos += store_gcov_u32(buffer, pos, GCOV_TAG_COUNTER_BASE);
|
pos += store_gcov_u32(buffer, pos, GCOV_TAG_COUNTER_BASE);
|
||||||
pos += store_gcov_u32(buffer, pos, fi_ptr->num_counters * 2);
|
pos += store_gcov_u32(buffer, pos, fi_ptr->num_counters * 2);
|
||||||
|
@ -1363,7 +1363,7 @@ config LOCKDEP
|
|||||||
bool
|
bool
|
||||||
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
||||||
select STACKTRACE
|
select STACKTRACE
|
||||||
select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !X86
|
depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
|
||||||
select KALLSYMS
|
select KALLSYMS
|
||||||
select KALLSYMS_ALL
|
select KALLSYMS_ALL
|
||||||
|
|
||||||
@ -1665,7 +1665,7 @@ config LATENCYTOP
|
|||||||
depends on DEBUG_KERNEL
|
depends on DEBUG_KERNEL
|
||||||
depends on STACKTRACE_SUPPORT
|
depends on STACKTRACE_SUPPORT
|
||||||
depends on PROC_FS
|
depends on PROC_FS
|
||||||
select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
|
depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
|
||||||
select KALLSYMS
|
select KALLSYMS
|
||||||
select KALLSYMS_ALL
|
select KALLSYMS_ALL
|
||||||
select STACKTRACE
|
select STACKTRACE
|
||||||
@ -1918,7 +1918,7 @@ config FAULT_INJECTION_STACKTRACE_FILTER
|
|||||||
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
|
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
|
||||||
depends on !X86_64
|
depends on !X86_64
|
||||||
select STACKTRACE
|
select STACKTRACE
|
||||||
select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
|
depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
|
||||||
help
|
help
|
||||||
Provide stacktrace filter for fault-injection capabilities
|
Provide stacktrace filter for fault-injection capabilities
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ static noinline void __init copy_user_test(void)
|
|||||||
char *kmem;
|
char *kmem;
|
||||||
char __user *usermem;
|
char __user *usermem;
|
||||||
size_t size = 10;
|
size_t size = 10;
|
||||||
int unused;
|
int __maybe_unused unused;
|
||||||
|
|
||||||
kmem = kmalloc(size, GFP_KERNEL);
|
kmem = kmalloc(size, GFP_KERNEL);
|
||||||
if (!kmem)
|
if (!kmem)
|
||||||
|
4
mm/gup.c
4
mm/gup.c
@ -1535,6 +1535,10 @@ struct page *get_dump_page(unsigned long addr)
|
|||||||
FOLL_FORCE | FOLL_DUMP | FOLL_GET);
|
FOLL_FORCE | FOLL_DUMP | FOLL_GET);
|
||||||
if (locked)
|
if (locked)
|
||||||
mmap_read_unlock(mm);
|
mmap_read_unlock(mm);
|
||||||
|
|
||||||
|
if (ret == 1 && is_page_poisoned(page))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
return (ret == 1) ? page : NULL;
|
return (ret == 1) ? page : NULL;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_ELF_CORE */
|
#endif /* CONFIG_ELF_CORE */
|
||||||
|
@ -97,6 +97,26 @@ static inline void set_page_refcounted(struct page *page)
|
|||||||
set_page_count(page, 1);
|
set_page_count(page, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When kernel touch the user page, the user page may be have been marked
|
||||||
|
* poison but still mapped in user space, if without this page, the kernel
|
||||||
|
* can guarantee the data integrity and operation success, the kernel is
|
||||||
|
* better to check the posion status and avoid touching it, be good not to
|
||||||
|
* panic, coredump for process fatal signal is a sample case matching this
|
||||||
|
* scenario. Or if kernel can't guarantee the data integrity, it's better
|
||||||
|
* not to call this function, let kernel touch the poison page and get to
|
||||||
|
* panic.
|
||||||
|
*/
|
||||||
|
static inline bool is_page_poisoned(struct page *page)
|
||||||
|
{
|
||||||
|
if (PageHWPoison(page))
|
||||||
|
return true;
|
||||||
|
else if (PageHuge(page) && PageHWPoison(compound_head(page)))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
extern unsigned long highest_memmap_pfn;
|
extern unsigned long highest_memmap_pfn;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -77,12 +77,14 @@ static void unpoison_page(struct page *page)
|
|||||||
void *addr;
|
void *addr;
|
||||||
|
|
||||||
addr = kmap_atomic(page);
|
addr = kmap_atomic(page);
|
||||||
|
kasan_disable_current();
|
||||||
/*
|
/*
|
||||||
* Page poisoning when enabled poisons each and every page
|
* Page poisoning when enabled poisons each and every page
|
||||||
* that is freed to buddy. Thus no extra check is done to
|
* that is freed to buddy. Thus no extra check is done to
|
||||||
* see if a page was poisoned.
|
* see if a page was poisoned.
|
||||||
*/
|
*/
|
||||||
check_poison_mem(addr, PAGE_SIZE);
|
check_poison_mem(kasan_reset_tag(addr), PAGE_SIZE);
|
||||||
|
kasan_enable_current();
|
||||||
kunmap_atomic(addr);
|
kunmap_atomic(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user