From: Matthias Reichl <hias@horus.com> To: Russell King - ARM Linux <linux@armlinux.org.uk> Cc: Steven Rostedt <rostedt@goodmis.org>, Kees Cook <keescook@chromium.org>, LKML <linux-kernel@vger.kernel.org>, Eric Anholt <eric@anholt.net>, Stefan Wahren <stefan.wahren@i2se.com>, Phil Elwell <phil@raspberrypi.org>, linux-rpi-kernel@lists.infradead.org, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH] Arm: mm: ftrace: Only set text back to ro after kernel has been marked ro Date: Tue, 5 Dec 2017 14:23:39 +0100 [thread overview] Message-ID: <20171205132339.behn34z6b7ci2m4j@camel2.lan> (raw) In-Reply-To: <20171205131416.GW10595@n2100.armlinux.org.uk> On Tue, Dec 05, 2017 at 01:14:17PM +0000, Russell King - ARM Linux wrote: > On Tue, Dec 05, 2017 at 12:47:09PM +0100, Matthias Reichl wrote: > > On Wed, Aug 23, 2017 at 03:03:51PM -0400, Steven Rostedt wrote: > > > On Wed, 23 Aug 2017 11:48:13 -0700 > > > Kees Cook <keescook@chromium.org> wrote: > > > > > > > > diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c > > > > > index ad80548..fd75f38 100644 > > > > > --- a/arch/arm/mm/init.c > > > > > +++ b/arch/arm/mm/init.c > > > > > @@ -745,19 +745,29 @@ static int __mark_rodata_ro(void *unused) > > > > > return 0; > > > > > } > > > > > > > > > > +static int kernel_set_to_readonly; > > > > > > > > Adding a comment here might be a good idea, something like: > > > > > > > > /* Has system boot-up reached mark_rodata_ro() yet? */ > > > > > > I don't mind adding a comment, but the above is rather self explanatory > > > (one can easily see that it is set in mark_rodata_ro() with a simple > > > search). > > > > > > If a comment is to be added, something a bit more descriptive of the > > > functionality of the variable would be appropriate: > > > > > > /* > > > * Ignore modifying kernel text permissions until the kernel core calls > > > * make_rodata_ro() at system start up. > > > */ > > > > > > I can resend with the comment, or whoever takes this could add it > > > themselves. > > > > Gentle ping: this patch doesn't seem to have landed in upstream > > trees yet. Is any more work required? > > > > It would be nice to have this fix added. Just tested next-20171205 > > on RPi B+, it oopses when the function tracer is enabled during boot. > > next-20171205 plus this patch boots up fine. > > When does it oops? Rather early in the boot process: [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.15.0-rc2-next-20171205 (hias@camel2) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #3 Tue Dec 5 12:35:08 CET 2017 [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache [ 0.000000] OF: fdt: Machine model: Raspberry Pi Model B Plus Rev 1.2 [ 0.000000] earlycon: pl11 at MMIO32 0x20201000 (options '') [ 0.000000] bootconsole [pl11] enabled [ 0.000000] Memory policy: Data cache writeback [ 0.000000] cma: Reserved 32 MiB at 0x13c00000 [ 0.000000] CPU: All CPU(s) started in SVC mode. [ 0.000000] random: fast init done [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 89408 [ 0.000000] Kernel command line: bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=1024 bcm2708_fb.fbswap=1 dma.dmachans=0x7f35 bcm2708.boardrev=0x10 bcm2708.serial=0x59ce1e57 bcm2708.uart_clock=48000000 bcm2708.disk_led_gpio=47 bcm2708.disk_led_active_low=0 smsc95xx.macaddr=B8:27:EB:CE:1E:57 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 root=/dev/mmcblk0p2 rw rootwait elevator=noop earlycon=pl011,mmio32,0x20201000 console=/dev/ttyAMA0,115200 ftrace=function [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Memory: 311776K/360448K available (7168K kernel code, 561K rwdata, 2212K rodata, 1024K init, 683K bss, 15904K reserved, 32768K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xd6800000 - 0xff800000 ( 656 MB) [ 0.000000] lowmem : 0xc0000000 - 0xd6000000 ( 352 MB) [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [ 0.000000] .text : 0x(ptrval) - 0x(ptrval) (8160 kB) [ 0.000000] .init : 0x(ptrval) - 0x(ptrval) (1024 kB) [ 0.000000] .data : 0x(ptrval) - 0x(ptrval) ( 562 kB) [ 0.000000] .bss : 0x(ptrval) - 0x(ptrval) ( 684 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] ftrace: allocating 25789 entries in 76 pages [ 0.000000] Starting tracer 'function' [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000052] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 2147483647500ns [ 0.008889] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns [ 0.018979] bcm2835: system timer (irq = 27) [ 0.028070] Console: colour dummy device 80x30 [ 0.033154] Calibrating delay loop... 697.95 BogoMIPS (lpj=3489792) [ 0.090179] pid_max: default: 32768 minimum: 301 [ 0.097851] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.104852] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.117353] CPU: Testing write buffer coherency: ok [ 0.127472] Setting up static identity map for 0x100000 - 0x100054 [ 0.145654] devtmpfs: initialized [ 0.235561] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5 [ 0.245751] Unable to handle kernel paging request at virtual address c09eb214 [ 0.253373] pgd = 8aaa5336 [ 0.256250] [c09eb214] *pgd=0080840e(bad) [ 0.260567] Internal error: Oops: 80d [#1] ARM [ 0.265073] Modules linked in: [ 0.268188] CPU: 0 PID: 1 Comm: swapper Not tainted 4.15.0-rc2-next-20171205 #3 [ 0.275592] Hardware name: BCM2835 [ 0.279046] task: 11ad8790 task.stack: 886fda4c [ 0.283670] PC is at ksysfs_init+0x64/0xb0 [ 0.287840] LR is at internal_create_group+0x294/0x2c4 [ 0.293049] pc : [<c0b0a33c>] lr : [<c0292898>] psr: 20000053 [ 0.299400] sp : d3a3ded0 ip : c028e908 fp : d3a3dee4 [ 0.304694] r10: 00000000 r9 : c0c8c500 r8 : c0c8c500 [ 0.309991] r7 : 00000000 r6 : c0c04048 r5 : c0c8d19c r4 : 00000000 [ 0.316607] r3 : 00000024 r2 : c0abf19c r1 : c09eb20c r0 : d3a81d80 [ 0.323224] Flags: nzCv IRQs on FIQs off Mode SVC_32 ISA ARM Segment none [ 0.330543] Control: 00c5387d Table: 00004008 DAC: 00000051 [ 0.336367] Process swapper (pid: 1, stack limit = 0xfa32e9e1) [ 0.342280] Stack: (0xd3a3ded0 to 0xd3a3e000) [ 0.346703] dec0: 00000001 c0b0a2d8 d3a3df5c d3a3dee8 [ 0.354999] dee0: c01027b0 c0b0a2e4 c0a280c0 00000000 d3a3df5c d3a3df00 c0138578 c0b00650 [ 0.363294] df00: d3a3df00 c0c0c328 00000000 c0a280d4 0000009f c0a280d4 00000001 00000001 [ 0.371590] df20: 000000a0 c0a27454 d5fffd21 d5fffd28 c014f4c0 4710e3ed 00000001 000000a0 [ 0.379886] df40: c0b5681c c0b7cb84 c0c8c500 c0c8c500 d3a3df94 d3a3df60 c0b00ef8 c01026f8 [ 0.388180] df60: 00000001 00000001 00000000 c0b00644 00000000 c07463a4 00000000 00000000 [ 0.396475] df80: 00000000 00000000 d3a3dfac d3a3df98 c07463bc c0b00df0 ffffffff 00000000 [ 0.404769] dfa0: 00000000 d3a3dfb0 c01010e8 c07463b0 00000000 00000000 00000000 00000000 [ 0.413061] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.421354] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000 [ 0.429689] [<c0b0a33c>] (ksysfs_init) from [<c01027b0>] (do_one_initcall+0xc4/0x184) [ 0.437652] [<c01027b0>] (do_one_initcall) from [<c0b00ef8>] (kernel_init_freeable+0x114/0x1d4) [ 0.446490] [<c0b00ef8>] (kernel_init_freeable) from [<c07463bc>] (kernel_init+0x18/0x11c) [ 0.454887] [<c07463bc>] (kernel_init) from [<c01010e8>] (ret_from_fork+0x14/0x2c) [ 0.462559] Exception stack(0xd3a3dfb0 to 0xd3a3dff8) [ 0.467683] dfa0: 00000000 00000000 00000000 00000000 [ 0.475976] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.484266] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 0.490982] Code: e3a00000 e89da830 e59f1048 e5950000 (e5813008) [ 0.497194] ---[ end trace 53d55c7b93eb8c51 ]--- [ 0.502064] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b [ 0.502064] [ 0.511346] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b [ 0.511346] so long, Hias > > Reading through this code, I'm left wondering why we switch the rodata > section to be writable here - if we're poking at kernel text, then > surely we shouldn't be the read-only data read-write? > > Should kernel_set_to_readonly also be a rodata-after-init variable?
WARNING: multiple messages have this Message-ID (diff)
From: hias@horus.com (Matthias Reichl) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH] Arm: mm: ftrace: Only set text back to ro after kernel has been marked ro Date: Tue, 5 Dec 2017 14:23:39 +0100 [thread overview] Message-ID: <20171205132339.behn34z6b7ci2m4j@camel2.lan> (raw) In-Reply-To: <20171205131416.GW10595@n2100.armlinux.org.uk> On Tue, Dec 05, 2017 at 01:14:17PM +0000, Russell King - ARM Linux wrote: > On Tue, Dec 05, 2017 at 12:47:09PM +0100, Matthias Reichl wrote: > > On Wed, Aug 23, 2017 at 03:03:51PM -0400, Steven Rostedt wrote: > > > On Wed, 23 Aug 2017 11:48:13 -0700 > > > Kees Cook <keescook@chromium.org> wrote: > > > > > > > > diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c > > > > > index ad80548..fd75f38 100644 > > > > > --- a/arch/arm/mm/init.c > > > > > +++ b/arch/arm/mm/init.c > > > > > @@ -745,19 +745,29 @@ static int __mark_rodata_ro(void *unused) > > > > > return 0; > > > > > } > > > > > > > > > > +static int kernel_set_to_readonly; > > > > > > > > Adding a comment here might be a good idea, something like: > > > > > > > > /* Has system boot-up reached mark_rodata_ro() yet? */ > > > > > > I don't mind adding a comment, but the above is rather self explanatory > > > (one can easily see that it is set in mark_rodata_ro() with a simple > > > search). > > > > > > If a comment is to be added, something a bit more descriptive of the > > > functionality of the variable would be appropriate: > > > > > > /* > > > * Ignore modifying kernel text permissions until the kernel core calls > > > * make_rodata_ro() at system start up. > > > */ > > > > > > I can resend with the comment, or whoever takes this could add it > > > themselves. > > > > Gentle ping: this patch doesn't seem to have landed in upstream > > trees yet. Is any more work required? > > > > It would be nice to have this fix added. Just tested next-20171205 > > on RPi B+, it oopses when the function tracer is enabled during boot. > > next-20171205 plus this patch boots up fine. > > When does it oops? Rather early in the boot process: [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.15.0-rc2-next-20171205 (hias at camel2) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #3 Tue Dec 5 12:35:08 CET 2017 [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache [ 0.000000] OF: fdt: Machine model: Raspberry Pi Model B Plus Rev 1.2 [ 0.000000] earlycon: pl11 at MMIO32 0x20201000 (options '') [ 0.000000] bootconsole [pl11] enabled [ 0.000000] Memory policy: Data cache writeback [ 0.000000] cma: Reserved 32 MiB at 0x13c00000 [ 0.000000] CPU: All CPU(s) started in SVC mode. [ 0.000000] random: fast init done [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 89408 [ 0.000000] Kernel command line: bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=1024 bcm2708_fb.fbswap=1 dma.dmachans=0x7f35 bcm2708.boardrev=0x10 bcm2708.serial=0x59ce1e57 bcm2708.uart_clock=48000000 bcm2708.disk_led_gpio=47 bcm2708.disk_led_active_low=0 smsc95xx.macaddr=B8:27:EB:CE:1E:57 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 root=/dev/mmcblk0p2 rw rootwait elevator=noop earlycon=pl011,mmio32,0x20201000 console=/dev/ttyAMA0,115200 ftrace=function [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Memory: 311776K/360448K available (7168K kernel code, 561K rwdata, 2212K rodata, 1024K init, 683K bss, 15904K reserved, 32768K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xd6800000 - 0xff800000 ( 656 MB) [ 0.000000] lowmem : 0xc0000000 - 0xd6000000 ( 352 MB) [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [ 0.000000] .text : 0x(ptrval) - 0x(ptrval) (8160 kB) [ 0.000000] .init : 0x(ptrval) - 0x(ptrval) (1024 kB) [ 0.000000] .data : 0x(ptrval) - 0x(ptrval) ( 562 kB) [ 0.000000] .bss : 0x(ptrval) - 0x(ptrval) ( 684 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] ftrace: allocating 25789 entries in 76 pages [ 0.000000] Starting tracer 'function' [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000052] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 2147483647500ns [ 0.008889] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns [ 0.018979] bcm2835: system timer (irq = 27) [ 0.028070] Console: colour dummy device 80x30 [ 0.033154] Calibrating delay loop... 697.95 BogoMIPS (lpj=3489792) [ 0.090179] pid_max: default: 32768 minimum: 301 [ 0.097851] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.104852] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.117353] CPU: Testing write buffer coherency: ok [ 0.127472] Setting up static identity map for 0x100000 - 0x100054 [ 0.145654] devtmpfs: initialized [ 0.235561] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5 [ 0.245751] Unable to handle kernel paging request at virtual address c09eb214 [ 0.253373] pgd = 8aaa5336 [ 0.256250] [c09eb214] *pgd=0080840e(bad) [ 0.260567] Internal error: Oops: 80d [#1] ARM [ 0.265073] Modules linked in: [ 0.268188] CPU: 0 PID: 1 Comm: swapper Not tainted 4.15.0-rc2-next-20171205 #3 [ 0.275592] Hardware name: BCM2835 [ 0.279046] task: 11ad8790 task.stack: 886fda4c [ 0.283670] PC is at ksysfs_init+0x64/0xb0 [ 0.287840] LR is at internal_create_group+0x294/0x2c4 [ 0.293049] pc : [<c0b0a33c>] lr : [<c0292898>] psr: 20000053 [ 0.299400] sp : d3a3ded0 ip : c028e908 fp : d3a3dee4 [ 0.304694] r10: 00000000 r9 : c0c8c500 r8 : c0c8c500 [ 0.309991] r7 : 00000000 r6 : c0c04048 r5 : c0c8d19c r4 : 00000000 [ 0.316607] r3 : 00000024 r2 : c0abf19c r1 : c09eb20c r0 : d3a81d80 [ 0.323224] Flags: nzCv IRQs on FIQs off Mode SVC_32 ISA ARM Segment none [ 0.330543] Control: 00c5387d Table: 00004008 DAC: 00000051 [ 0.336367] Process swapper (pid: 1, stack limit = 0xfa32e9e1) [ 0.342280] Stack: (0xd3a3ded0 to 0xd3a3e000) [ 0.346703] dec0: 00000001 c0b0a2d8 d3a3df5c d3a3dee8 [ 0.354999] dee0: c01027b0 c0b0a2e4 c0a280c0 00000000 d3a3df5c d3a3df00 c0138578 c0b00650 [ 0.363294] df00: d3a3df00 c0c0c328 00000000 c0a280d4 0000009f c0a280d4 00000001 00000001 [ 0.371590] df20: 000000a0 c0a27454 d5fffd21 d5fffd28 c014f4c0 4710e3ed 00000001 000000a0 [ 0.379886] df40: c0b5681c c0b7cb84 c0c8c500 c0c8c500 d3a3df94 d3a3df60 c0b00ef8 c01026f8 [ 0.388180] df60: 00000001 00000001 00000000 c0b00644 00000000 c07463a4 00000000 00000000 [ 0.396475] df80: 00000000 00000000 d3a3dfac d3a3df98 c07463bc c0b00df0 ffffffff 00000000 [ 0.404769] dfa0: 00000000 d3a3dfb0 c01010e8 c07463b0 00000000 00000000 00000000 00000000 [ 0.413061] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.421354] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000 [ 0.429689] [<c0b0a33c>] (ksysfs_init) from [<c01027b0>] (do_one_initcall+0xc4/0x184) [ 0.437652] [<c01027b0>] (do_one_initcall) from [<c0b00ef8>] (kernel_init_freeable+0x114/0x1d4) [ 0.446490] [<c0b00ef8>] (kernel_init_freeable) from [<c07463bc>] (kernel_init+0x18/0x11c) [ 0.454887] [<c07463bc>] (kernel_init) from [<c01010e8>] (ret_from_fork+0x14/0x2c) [ 0.462559] Exception stack(0xd3a3dfb0 to 0xd3a3dff8) [ 0.467683] dfa0: 00000000 00000000 00000000 00000000 [ 0.475976] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.484266] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 0.490982] Code: e3a00000 e89da830 e59f1048 e5950000 (e5813008) [ 0.497194] ---[ end trace 53d55c7b93eb8c51 ]--- [ 0.502064] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b [ 0.502064] [ 0.511346] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b [ 0.511346] so long, Hias > > Reading through this code, I'm left wondering why we switch the rodata > section to be writable here - if we're poking at kernel text, then > surely we shouldn't be the read-only data read-write? > > Should kernel_set_to_readonly also be a rodata-after-init variable?
next prev parent reply other threads:[~2017-12-05 13:23 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-08-23 17:58 [PATCH] Arm: mm: ftrace: Only set text back to ro after kernel has been marked ro Steven Rostedt 2017-08-23 17:58 ` Steven Rostedt 2017-08-23 18:20 ` Matthias Reichl 2017-08-23 18:20 ` Matthias Reichl 2017-08-23 18:48 ` Kees Cook 2017-08-23 18:48 ` Kees Cook 2017-08-23 19:03 ` Steven Rostedt 2017-08-23 19:03 ` Steven Rostedt 2017-12-05 11:47 ` Matthias Reichl 2017-12-05 11:47 ` Matthias Reichl 2017-12-05 13:14 ` Russell King - ARM Linux 2017-12-05 13:14 ` Russell King - ARM Linux 2017-12-05 13:23 ` Matthias Reichl [this message] 2017-12-05 13:23 ` Matthias Reichl 2017-12-05 13:30 ` Phil Elwell 2017-12-05 13:30 ` Phil Elwell 2017-12-05 13:36 ` Russell King - ARM Linux 2017-12-05 13:36 ` Russell King - ARM Linux 2017-12-05 19:35 ` Kees Cook 2017-12-05 19:35 ` Kees Cook 2017-12-05 20:09 ` Russell King - ARM Linux 2017-12-05 20:09 ` Russell King - ARM Linux 2017-12-05 20:14 ` Kees Cook 2017-12-05 20:14 ` Kees Cook 2018-06-29 14:47 ` Matthias Reichl 2018-06-29 14:47 ` Matthias Reichl 2018-06-29 15:16 ` Steven Rostedt 2018-06-29 15:16 ` Steven Rostedt 2018-06-29 17:29 ` Matthias Reichl 2018-06-29 17:29 ` Matthias Reichl
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20171205132339.behn34z6b7ci2m4j@camel2.lan \ --to=hias@horus.com \ --cc=eric@anholt.net \ --cc=keescook@chromium.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-rpi-kernel@lists.infradead.org \ --cc=linux@armlinux.org.uk \ --cc=phil@raspberrypi.org \ --cc=rostedt@goodmis.org \ --cc=stefan.wahren@i2se.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.