From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, stable@vger.kernel.org, Jon Hunter <jonathanh@nvidia.com>, Arend van Spriel <arend.vanspriel@broadcom.com>, Ard Biesheuvel <ard.biesheuvel@linaro.org>, Andy Lutomirski <luto@kernel.org>, Bhupesh Sharma <bhsharma@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@intel.com>, Eric Snowberg <eric.snowberg@oracle.com>, Hans de Goede <hdegoede@redhat.com>, Joe Perches <joe@perches.com>, Julien Thierry <julien.thierry@arm.com>, Linus Torvalds <torvalds@linux-foundation.org>, Marc Zyngier <marc.zyngier@arm.com>, Matt Fleming <matt@codeblueprint.co.uk>, Nathan Chancellor <natechancellor@gmail.com>, Peter Zijlstra <peterz@infradead.org>, Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>, Sedat Dilek <sedat.dilek@gmail.com>, Thomas Gleixner <tglx@linutronix.de>, YiFei Zhu <zhuyifei1999@gmail.com>, linux-efi@vger.kernel.org, Ingo Molnar <mingo@kernel.org>, Sasha Levin <sashal@kernel.org> Subject: [PATCH 4.9 031/137] firmware/efi: Add NULL pointer checks in efivars API functions Date: Mon, 11 Feb 2019 15:18:32 +0100 [thread overview] Message-ID: <20190211141814.851636102@linuxfoundation.org> (raw) In-Reply-To: <20190211141811.964925535@linuxfoundation.org> 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit ab2180a15ce54739fed381efb4cb12e78dfb1561 ] Since commit: ce2e6db554fa ("brcmfmac: Add support for getting nvram contents from EFI variables") we have a device driver accessing the efivars API. Several functions in the efivars API assume __efivars is set, i.e., that they will be accessed only after efivars_register() has been called. However, the following NULL pointer access was reported calling efivar_entry_size() from the brcmfmac device driver: Unable to handle kernel NULL pointer dereference at virtual address 00000008 pgd = 60bfa5f1 [00000008] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM ... Hardware name: NVIDIA Tegra SoC (Flattened Device Tree) Workqueue: events request_firmware_work_func PC is at efivar_entry_size+0x28/0x90 LR is at brcmf_fw_complete_request+0x3f8/0x8d4 [brcmfmac] pc : [<c0c40718>] lr : [<bf2a3ef4>] psr: a00d0113 sp : ede7fe28 ip : ee983410 fp : c1787f30 r10: 00000000 r9 : 00000000 r8 : bf2b2258 r7 : ee983000 r6 : c1604c48 r5 : ede7fe88 r4 : edf337c0 r3 : 00000000 r2 : 00000000 r1 : ede7fe88 r0 : c17712c8 Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: ad16804a DAC: 00000051 Disassembly showed that the local static variable __efivars is NULL, which is not entirely unexpected given that it is a non-EFI platform. So add a NULL pointer check to efivar_entry_size(), and to related functions while at it. In efivars_register() a couple of sanity checks are added as well. Reported-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Bhupesh Sharma <bhsharma@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Eric Snowberg <eric.snowberg@oracle.com> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Joe Perches <joe@perches.com> Cc: Julien Thierry <julien.thierry@arm.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: Matt Fleming <matt@codeblueprint.co.uk> Cc: Nathan Chancellor <natechancellor@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com> Cc: Sedat Dilek <sedat.dilek@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: YiFei Zhu <zhuyifei1999@gmail.com> Cc: linux-efi@vger.kernel.org Link: http://lkml.kernel.org/r/20181129171230.18699-9-ard.biesheuvel@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/firmware/efi/vars.c | 99 +++++++++++++++++++++++++++++-------- 1 file changed, 78 insertions(+), 21 deletions(-) diff --git a/drivers/firmware/efi/vars.c b/drivers/firmware/efi/vars.c index 9336ffdf6e2c..fceaafd67ec6 100644 --- a/drivers/firmware/efi/vars.c +++ b/drivers/firmware/efi/vars.c @@ -318,7 +318,12 @@ EXPORT_SYMBOL_GPL(efivar_variable_is_removable); static efi_status_t check_var_size(u32 attributes, unsigned long size) { - const struct efivar_operations *fops = __efivars->ops; + const struct efivar_operations *fops; + + if (!__efivars) + return EFI_UNSUPPORTED; + + fops = __efivars->ops; if (!fops->query_variable_store) return EFI_UNSUPPORTED; @@ -329,7 +334,12 @@ check_var_size(u32 attributes, unsigned long size) static efi_status_t check_var_size_nonblocking(u32 attributes, unsigned long size) { - const struct efivar_operations *fops = __efivars->ops; + const struct efivar_operations *fops; + + if (!__efivars) + return EFI_UNSUPPORTED; + + fops = __efivars->ops; if (!fops->query_variable_store) return EFI_UNSUPPORTED; @@ -429,13 +439,18 @@ static void dup_variable_bug(efi_char16_t *str16, efi_guid_t *vendor_guid, int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *), void *data, bool duplicates, struct list_head *head) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; unsigned long variable_name_size = 1024; efi_char16_t *variable_name; efi_status_t status; efi_guid_t vendor_guid; int err = 0; + if (!__efivars) + return -EFAULT; + + ops = __efivars->ops; + variable_name = kzalloc(variable_name_size, GFP_KERNEL); if (!variable_name) { printk(KERN_ERR "efivars: Memory allocation failed.\n"); @@ -583,12 +598,14 @@ static void efivar_entry_list_del_unlock(struct efivar_entry *entry) */ int __efivar_entry_delete(struct efivar_entry *entry) { - const struct efivar_operations *ops = __efivars->ops; efi_status_t status; - status = ops->set_variable(entry->var.VariableName, - &entry->var.VendorGuid, - 0, 0, NULL); + if (!__efivars) + return -EINVAL; + + status = __efivars->ops->set_variable(entry->var.VariableName, + &entry->var.VendorGuid, + 0, 0, NULL); return efi_status_to_err(status); } @@ -607,12 +624,17 @@ EXPORT_SYMBOL_GPL(__efivar_entry_delete); */ int efivar_entry_delete(struct efivar_entry *entry) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; if (down_interruptible(&efivars_lock)) return -EINTR; + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + ops = __efivars->ops; status = ops->set_variable(entry->var.VariableName, &entry->var.VendorGuid, 0, 0, NULL); @@ -650,13 +672,19 @@ EXPORT_SYMBOL_GPL(efivar_entry_delete); int efivar_entry_set(struct efivar_entry *entry, u32 attributes, unsigned long size, void *data, struct list_head *head) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; efi_char16_t *name = entry->var.VariableName; efi_guid_t vendor = entry->var.VendorGuid; if (down_interruptible(&efivars_lock)) return -EINTR; + + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + ops = __efivars->ops; if (head && efivar_entry_find(name, vendor, head, false)) { up(&efivars_lock); return -EEXIST; @@ -687,12 +715,17 @@ static int efivar_entry_set_nonblocking(efi_char16_t *name, efi_guid_t vendor, u32 attributes, unsigned long size, void *data) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; if (down_trylock(&efivars_lock)) return -EBUSY; + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + status = check_var_size_nonblocking(attributes, size + ucs2_strsize(name, 1024)); if (status != EFI_SUCCESS) { @@ -700,6 +733,7 @@ efivar_entry_set_nonblocking(efi_char16_t *name, efi_guid_t vendor, return -ENOSPC; } + ops = __efivars->ops; status = ops->set_variable_nonblocking(name, &vendor, attributes, size, data); @@ -727,9 +761,13 @@ efivar_entry_set_nonblocking(efi_char16_t *name, efi_guid_t vendor, int efivar_entry_set_safe(efi_char16_t *name, efi_guid_t vendor, u32 attributes, bool block, unsigned long size, void *data) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; + if (!__efivars) + return -EINVAL; + + ops = __efivars->ops; if (!ops->query_variable_store) return -ENOSYS; @@ -829,13 +867,18 @@ EXPORT_SYMBOL_GPL(efivar_entry_find); */ int efivar_entry_size(struct efivar_entry *entry, unsigned long *size) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; *size = 0; if (down_interruptible(&efivars_lock)) return -EINTR; + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + ops = __efivars->ops; status = ops->get_variable(entry->var.VariableName, &entry->var.VendorGuid, NULL, size, NULL); up(&efivars_lock); @@ -861,12 +904,14 @@ EXPORT_SYMBOL_GPL(efivar_entry_size); int __efivar_entry_get(struct efivar_entry *entry, u32 *attributes, unsigned long *size, void *data) { - const struct efivar_operations *ops = __efivars->ops; efi_status_t status; - status = ops->get_variable(entry->var.VariableName, - &entry->var.VendorGuid, - attributes, size, data); + if (!__efivars) + return -EINVAL; + + status = __efivars->ops->get_variable(entry->var.VariableName, + &entry->var.VendorGuid, + attributes, size, data); return efi_status_to_err(status); } @@ -882,14 +927,19 @@ EXPORT_SYMBOL_GPL(__efivar_entry_get); int efivar_entry_get(struct efivar_entry *entry, u32 *attributes, unsigned long *size, void *data) { - const struct efivar_operations *ops = __efivars->ops; efi_status_t status; if (down_interruptible(&efivars_lock)) return -EINTR; - status = ops->get_variable(entry->var.VariableName, - &entry->var.VendorGuid, - attributes, size, data); + + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + + status = __efivars->ops->get_variable(entry->var.VariableName, + &entry->var.VendorGuid, + attributes, size, data); up(&efivars_lock); return efi_status_to_err(status); @@ -921,7 +971,7 @@ EXPORT_SYMBOL_GPL(efivar_entry_get); int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, unsigned long *size, void *data, bool *set) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_char16_t *name = entry->var.VariableName; efi_guid_t *vendor = &entry->var.VendorGuid; efi_status_t status; @@ -940,6 +990,11 @@ int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, if (down_interruptible(&efivars_lock)) return -EINTR; + if (!__efivars) { + err = -EINVAL; + goto out; + } + /* * Ensure that the available space hasn't shrunk below the safe level */ @@ -956,6 +1011,8 @@ int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, } } + ops = __efivars->ops; + status = ops->set_variable(name, vendor, attributes, *size, data); if (status != EFI_SUCCESS) { err = efi_status_to_err(status); -- 2.19.1
WARNING: multiple messages have this Message-ID (diff)
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, stable@vger.kernel.org, Jon Hunter <jonathanh@nvidia.com>, Arend van Spriel <arend.vanspriel@broadcom.com>, Ard Biesheuvel <ard.biesheuvel@linaro.org>, Andy Lutomirski <luto@kernel.org>, Bhupesh Sharma <bhsharma@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@intel.com>, Eric Snowberg <eric.snowberg@oracle.com>, Hans de Goede <hdegoede@redhat.com>, Joe Perches <joe@perches.com>, Julien Thierry <julien.thierry@arm.com>, Linus Torvalds <torvalds@linux-foundation.org>, Marc Zyngier <marc.zyngier@arm.com>, Matt Fleming <matt@codeblueprint.co.uk>, Nathan Chancellor <natechancellor@gmail.com>, Peter Zijlstra <peterz@infradead.org>, Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com> Subject: [PATCH 4.9 031/137] firmware/efi: Add NULL pointer checks in efivars API functions Date: Mon, 11 Feb 2019 15:18:32 +0100 [thread overview] Message-ID: <20190211141814.851636102@linuxfoundation.org> (raw) In-Reply-To: <20190211141811.964925535@linuxfoundation.org> 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit ab2180a15ce54739fed381efb4cb12e78dfb1561 ] Since commit: ce2e6db554fa ("brcmfmac: Add support for getting nvram contents from EFI variables") we have a device driver accessing the efivars API. Several functions in the efivars API assume __efivars is set, i.e., that they will be accessed only after efivars_register() has been called. However, the following NULL pointer access was reported calling efivar_entry_size() from the brcmfmac device driver: Unable to handle kernel NULL pointer dereference at virtual address 00000008 pgd = 60bfa5f1 [00000008] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM ... Hardware name: NVIDIA Tegra SoC (Flattened Device Tree) Workqueue: events request_firmware_work_func PC is at efivar_entry_size+0x28/0x90 LR is at brcmf_fw_complete_request+0x3f8/0x8d4 [brcmfmac] pc : [<c0c40718>] lr : [<bf2a3ef4>] psr: a00d0113 sp : ede7fe28 ip : ee983410 fp : c1787f30 r10: 00000000 r9 : 00000000 r8 : bf2b2258 r7 : ee983000 r6 : c1604c48 r5 : ede7fe88 r4 : edf337c0 r3 : 00000000 r2 : 00000000 r1 : ede7fe88 r0 : c17712c8 Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: ad16804a DAC: 00000051 Disassembly showed that the local static variable __efivars is NULL, which is not entirely unexpected given that it is a non-EFI platform. So add a NULL pointer check to efivar_entry_size(), and to related functions while at it. In efivars_register() a couple of sanity checks are added as well. Reported-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Bhupesh Sharma <bhsharma@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Eric Snowberg <eric.snowberg@oracle.com> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Joe Perches <joe@perches.com> Cc: Julien Thierry <julien.thierry@arm.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: Matt Fleming <matt@codeblueprint.co.uk> Cc: Nathan Chancellor <natechancellor@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com> Cc: Sedat Dilek <sedat.dilek@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: YiFei Zhu <zhuyifei1999@gmail.com> Cc: linux-efi@vger.kernel.org Link: http://lkml.kernel.org/r/20181129171230.18699-9-ard.biesheuvel@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/firmware/efi/vars.c | 99 +++++++++++++++++++++++++++++-------- 1 file changed, 78 insertions(+), 21 deletions(-) diff --git a/drivers/firmware/efi/vars.c b/drivers/firmware/efi/vars.c index 9336ffdf6e2c..fceaafd67ec6 100644 --- a/drivers/firmware/efi/vars.c +++ b/drivers/firmware/efi/vars.c @@ -318,7 +318,12 @@ EXPORT_SYMBOL_GPL(efivar_variable_is_removable); static efi_status_t check_var_size(u32 attributes, unsigned long size) { - const struct efivar_operations *fops = __efivars->ops; + const struct efivar_operations *fops; + + if (!__efivars) + return EFI_UNSUPPORTED; + + fops = __efivars->ops; if (!fops->query_variable_store) return EFI_UNSUPPORTED; @@ -329,7 +334,12 @@ check_var_size(u32 attributes, unsigned long size) static efi_status_t check_var_size_nonblocking(u32 attributes, unsigned long size) { - const struct efivar_operations *fops = __efivars->ops; + const struct efivar_operations *fops; + + if (!__efivars) + return EFI_UNSUPPORTED; + + fops = __efivars->ops; if (!fops->query_variable_store) return EFI_UNSUPPORTED; @@ -429,13 +439,18 @@ static void dup_variable_bug(efi_char16_t *str16, efi_guid_t *vendor_guid, int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *), void *data, bool duplicates, struct list_head *head) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; unsigned long variable_name_size = 1024; efi_char16_t *variable_name; efi_status_t status; efi_guid_t vendor_guid; int err = 0; + if (!__efivars) + return -EFAULT; + + ops = __efivars->ops; + variable_name = kzalloc(variable_name_size, GFP_KERNEL); if (!variable_name) { printk(KERN_ERR "efivars: Memory allocation failed.\n"); @@ -583,12 +598,14 @@ static void efivar_entry_list_del_unlock(struct efivar_entry *entry) */ int __efivar_entry_delete(struct efivar_entry *entry) { - const struct efivar_operations *ops = __efivars->ops; efi_status_t status; - status = ops->set_variable(entry->var.VariableName, - &entry->var.VendorGuid, - 0, 0, NULL); + if (!__efivars) + return -EINVAL; + + status = __efivars->ops->set_variable(entry->var.VariableName, + &entry->var.VendorGuid, + 0, 0, NULL); return efi_status_to_err(status); } @@ -607,12 +624,17 @@ EXPORT_SYMBOL_GPL(__efivar_entry_delete); */ int efivar_entry_delete(struct efivar_entry *entry) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; if (down_interruptible(&efivars_lock)) return -EINTR; + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + ops = __efivars->ops; status = ops->set_variable(entry->var.VariableName, &entry->var.VendorGuid, 0, 0, NULL); @@ -650,13 +672,19 @@ EXPORT_SYMBOL_GPL(efivar_entry_delete); int efivar_entry_set(struct efivar_entry *entry, u32 attributes, unsigned long size, void *data, struct list_head *head) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; efi_char16_t *name = entry->var.VariableName; efi_guid_t vendor = entry->var.VendorGuid; if (down_interruptible(&efivars_lock)) return -EINTR; + + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + ops = __efivars->ops; if (head && efivar_entry_find(name, vendor, head, false)) { up(&efivars_lock); return -EEXIST; @@ -687,12 +715,17 @@ static int efivar_entry_set_nonblocking(efi_char16_t *name, efi_guid_t vendor, u32 attributes, unsigned long size, void *data) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; if (down_trylock(&efivars_lock)) return -EBUSY; + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + status = check_var_size_nonblocking(attributes, size + ucs2_strsize(name, 1024)); if (status != EFI_SUCCESS) { @@ -700,6 +733,7 @@ efivar_entry_set_nonblocking(efi_char16_t *name, efi_guid_t vendor, return -ENOSPC; } + ops = __efivars->ops; status = ops->set_variable_nonblocking(name, &vendor, attributes, size, data); @@ -727,9 +761,13 @@ efivar_entry_set_nonblocking(efi_char16_t *name, efi_guid_t vendor, int efivar_entry_set_safe(efi_char16_t *name, efi_guid_t vendor, u32 attributes, bool block, unsigned long size, void *data) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; + if (!__efivars) + return -EINVAL; + + ops = __efivars->ops; if (!ops->query_variable_store) return -ENOSYS; @@ -829,13 +867,18 @@ EXPORT_SYMBOL_GPL(efivar_entry_find); */ int efivar_entry_size(struct efivar_entry *entry, unsigned long *size) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_status_t status; *size = 0; if (down_interruptible(&efivars_lock)) return -EINTR; + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + ops = __efivars->ops; status = ops->get_variable(entry->var.VariableName, &entry->var.VendorGuid, NULL, size, NULL); up(&efivars_lock); @@ -861,12 +904,14 @@ EXPORT_SYMBOL_GPL(efivar_entry_size); int __efivar_entry_get(struct efivar_entry *entry, u32 *attributes, unsigned long *size, void *data) { - const struct efivar_operations *ops = __efivars->ops; efi_status_t status; - status = ops->get_variable(entry->var.VariableName, - &entry->var.VendorGuid, - attributes, size, data); + if (!__efivars) + return -EINVAL; + + status = __efivars->ops->get_variable(entry->var.VariableName, + &entry->var.VendorGuid, + attributes, size, data); return efi_status_to_err(status); } @@ -882,14 +927,19 @@ EXPORT_SYMBOL_GPL(__efivar_entry_get); int efivar_entry_get(struct efivar_entry *entry, u32 *attributes, unsigned long *size, void *data) { - const struct efivar_operations *ops = __efivars->ops; efi_status_t status; if (down_interruptible(&efivars_lock)) return -EINTR; - status = ops->get_variable(entry->var.VariableName, - &entry->var.VendorGuid, - attributes, size, data); + + if (!__efivars) { + up(&efivars_lock); + return -EINVAL; + } + + status = __efivars->ops->get_variable(entry->var.VariableName, + &entry->var.VendorGuid, + attributes, size, data); up(&efivars_lock); return efi_status_to_err(status); @@ -921,7 +971,7 @@ EXPORT_SYMBOL_GPL(efivar_entry_get); int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, unsigned long *size, void *data, bool *set) { - const struct efivar_operations *ops = __efivars->ops; + const struct efivar_operations *ops; efi_char16_t *name = entry->var.VariableName; efi_guid_t *vendor = &entry->var.VendorGuid; efi_status_t status; @@ -940,6 +990,11 @@ int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, if (down_interruptible(&efivars_lock)) return -EINTR; + if (!__efivars) { + err = -EINVAL; + goto out; + } + /* * Ensure that the available space hasn't shrunk below the safe level */ @@ -956,6 +1011,8 @@ int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, } } + ops = __efivars->ops; + status = ops->set_variable(name, vendor, attributes, *size, data); if (status != EFI_SUCCESS) { err = efi_status_to_err(status); -- 2.19.1
next prev parent reply other threads:[~2019-02-11 15:05 UTC|newest] Thread overview: 152+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-11 14:18 [PATCH 4.9 000/137] 4.9.156-stable review Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 001/137] drm/bufs: Fix Spectre v1 vulnerability Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 002/137] staging: iio: adc: ad7280a: handle error from __ad7280_read32() Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 003/137] ASoC: Intel: mrfld: fix uninitialized variable access Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 004/137] gpu: ipu-v3: image-convert: Prevent race between run and unprepare Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 005/137] ath9k: dynack: use authentication messages for late ack Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 006/137] scsi: lpfc: Correct LCB RJT handling Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 007/137] ARM: 8808/1: kexec:offline panic_smp_self_stop CPU Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 008/137] dlm: Dont swamp the CPU with callbacks queued during recovery Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 009/137] x86/PCI: Fix Broadcom CNB20LE unintended sign extension (redux) Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 010/137] powerpc/pseries: add of_node_put() in dlpar_detach_node() Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 011/137] drm/vc4: ->x_scaling[1] should never be set to VC4_SCALING_NONE Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 012/137] serial: fsl_lpuart: clear parity enable bit when disable parity Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 013/137] ptp: check gettime64 return code in PTP_SYS_OFFSET ioctl Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 014/137] staging:iio:ad2s90: Make probe handle spi_setup failure Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 015/137] staging: iio: ad7780: update voltage on read Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 016/137] ARM: OMAP2+: hwmod: Fix some section annotations Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 017/137] modpost: validate symbol names also in find_elf_symbol Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 018/137] perf tools: Add Hygon Dhyana support Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 019/137] soc/tegra: Dont leak device tree node reference Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 020/137] media: mtk-vcodec: Release device nodes in mtk_vcodec_init_enc_pm() Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 021/137] dmaengine: xilinx_dma: Remove __aligned attribute on zynqmp_dma_desc_ll Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 022/137] iio: accel: kxcjk1013: Add KIOX010A ACPI Hardware-ID Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 023/137] media: adv*/tc358743/ths8200: fill in min width/height/pixelclock Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 024/137] f2fs: move dir data flush to write checkpoint process Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 025/137] f2fs: avoid build warn of fall_through Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 026/137] f2fs: fix wrong return value of f2fs_acl_create Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 027/137] sunvdc: Do not spin in an infinite loop when vio_ldc_send() returns EAGAIN Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 028/137] soc: bcm: brcmstb: Dont leak device tree node reference Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 029/137] nfsd4: fix crash on writing v4_end_grace before nfsd startup Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 030/137] Thermal: do not clear passive state during system sleep Greg Kroah-Hartman 2019-02-11 14:18 ` Greg Kroah-Hartman [this message] 2019-02-11 14:18 ` [PATCH 4.9 031/137] firmware/efi: Add NULL pointer checks in efivars API functions Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 032/137] arm64: ftrace: dont adjust the LR value Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 033/137] ARM: dts: mmp2: fix TWSI2 Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 034/137] ARM: mmp/mmp2: dt: enable the clock Greg Kroah-Hartman 2019-02-11 20:51 ` Pavel Machek 2019-02-12 8:57 ` Greg Kroah-Hartman 2019-02-12 16:50 ` Sasha Levin 2019-02-12 18:11 ` Pavel Machek 2019-02-13 2:59 ` Lubomir Rintel 2019-02-11 14:18 ` [PATCH 4.9 035/137] x86/fpu: Add might_fault() to user_insn() Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 036/137] media: DaVinci-VPBE: fix error handling in vpbe_initialize() Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 037/137] smack: fix access permissions for keyring Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 038/137] usb: hub: delay hub autosuspend if USB3 port is still link training Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 039/137] timekeeping: Use proper seqcount initializer Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 040/137] clk: sunxi-ng: a33: Set CLK_SET_RATE_PARENT for all audio module clocks Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 041/137] iommu/amd: Fix amd_iommu=force_isolation Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 042/137] ARM: dts: Fix OMAP4430 SDP Ethernet startup Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 043/137] mips: bpf: fix encoding bug for mm_srlv32_op Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 044/137] tracing: Have trace_stack nr_entries compare not be so subtle Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 045/137] iommu/arm-smmu: Add support for qcom,smmu-v2 variant Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 046/137] iommu/arm-smmu-v3: Use explicit mb() when moving cons pointer Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 047/137] sata_rcar: fix deferred probing Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 048/137] clk: imx6sl: ensure MMDC CH0 handshake is bypassed Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 049/137] cpuidle: big.LITTLE: fix refcount leak Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 050/137] i2c-axxia: check for error conditions first Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 051/137] udf: Fix BUG on corrupted inode Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 052/137] ARM: pxa: avoid section mismatch warning Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 053/137] ASoC: fsl: Fix SND_SOC_EUKREA_TLV320 build error on i.MX8M Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 054/137] ARM: mmp: fix timer_init calls Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 055/137] memstick: Prevent memstick host from getting runtime suspended during card detection Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 056/137] tty: serial: samsung: Properly set flags in autoCTS mode Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 057/137] perf header: Fix unchecked usage of strncpy() Greg Kroah-Hartman 2019-02-11 14:18 ` [PATCH 4.9 058/137] perf probe: " Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 059/137] KVM: s390: unregister debug feature on failing arch init Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 060/137] arm64: KVM: Skip MMIO insn after emulation Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 061/137] powerpc/uaccess: fix warning/error with access_ok() Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 062/137] mac80211: fix radiotap vendor presence bitmap handling Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 063/137] xfrm6_tunnel: Fix spi check in __xfrm6_tunnel_alloc_spi Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 064/137] Bluetooth: Fix unnecessary error message for HCI request completion Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 065/137] scsi: smartpqi: correct host serial num for ssa Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 066/137] scsi: smartpqi: correct volume status Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 067/137] cw1200: Fix concurrency use-after-free bugs in cw1200_hw_scan() Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 068/137] drbd: narrow rcu_read_lock in drbd_sync_handshake Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 069/137] drbd: disconnect, if the wrong UUIDs are attached on a connected peer Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 070/137] drbd: skip spurious timeout (ping-timeo) when failing promote Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 071/137] drbd: Avoid Clang warning about pointless switch statment Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 072/137] video: clps711x-fb: release disp device node in probe() Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 073/137] fbdev: fbmem: behave better with small rotated displays and many CPUs Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 074/137] i40e: define proper net_device::neigh_priv_len Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 075/137] igb: Fix an issue that PME is not enabled during runtime suspend Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 076/137] fbdev: fbcon: Fix unregister crash when more than one framebuffer Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 077/137] pinctrl: meson: meson8: fix the GPIO function for the GPIOAO pins Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 078/137] pinctrl: meson: meson8b: " Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 079/137] KVM: x86: svm: report MSR_IA32_MCG_EXT_CTL as unsupported Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 080/137] NFS: nfs_compare_mount_options always compare auth flavors Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 081/137] hwmon: (lm80) fix a missing check of the status of SMBus read Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 082/137] hwmon: (lm80) fix a missing check of bus read in lm80 probe Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 083/137] seq_buf: Make seq_buf_puts() null-terminate the buffer Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 084/137] crypto: ux500 - Use proper enum in cryp_set_dma_transfer Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 085/137] crypto: ux500 - Use proper enum in hash_set_dma_transfer Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 086/137] MIPS: ralink: Select CONFIG_CPU_MIPSR2_IRQ_VI on MT7620/8 Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 087/137] cifs: check ntwrk_buf_start for NULL before dereferencing it Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 088/137] um: Avoid marking pages with "changed protection" Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 089/137] niu: fix missing checks of niu_pci_eeprom_read Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 090/137] f2fs: fix sbi->extent_list corruption issue Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 091/137] scripts/decode_stacktrace: only strip base path when a prefix of the path Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 092/137] ocfs2: dont clear bh uptodate for block read Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 093/137] isdn: hisax: hfc_pci: Fix a possible concurrency use-after-free bug in HFCPCI_l1hw() Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 094/137] gdrom: fix a memory leak bug Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 095/137] fsl/fman: Use GFP_ATOMIC in {memac,tgec}_add_hash_mac_address() Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 096/137] block/swim3: Fix -EBUSY error when re-opening device after unmount Greg Kroah-Hartman 2019-02-11 14:19 ` Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 097/137] thermal: generic-adc: Fix adc to temp interpolation Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 098/137] HID: lenovo: Add checks to fix of_led_classdev_register Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 099/137] fs/proc/base.c: use ns_capable instead of capable for timerslack_ns Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 100/137] kernel/hung_task.c: break RCU locks based on jiffies Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 101/137] proc/sysctl: fix return error for proc_doulongvec_minmax() Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 102/137] fs/epoll: drop ovflist branch prediction Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 103/137] exec: load_script: dont blindly truncate shebang string Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 104/137] thermal: hwmon: inline helpers when CONFIG_THERMAL_HWMON is not set Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 105/137] dccp: fool proof ccid_hc_[rt]x_parse_options() Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 106/137] net: dp83640: expire old TX-skb Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 107/137] rxrpc: bad unlock balance in rxrpc_recvmsg Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 108/137] skge: potential memory corruption in skge_get_regs() Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 109/137] rds: fix refcount bug in rds_sock_addref Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 110/137] net: systemport: Fix WoL with password after deep sleep Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 111/137] net/mlx5e: Force CHECKSUM_UNNECESSARY for short ethernet frames Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 112/137] net: dsa: slave: Dont propagate flag changes on down slave interfaces Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 113/137] enic: fix checksum validation for IPv6 Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 114/137] ALSA: compress: Fix stop handling on compressed capture streams Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 115/137] ALSA: hda - Serialize codec registrations Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 116/137] fuse: call pipe_buf_release() under pipe lock Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 117/137] fuse: decrement NR_WRITEBACK_TEMP on the right page Greg Kroah-Hartman 2019-02-11 14:19 ` [PATCH 4.9 118/137] fuse: handle zero sized retrieve correctly Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 119/137] dmaengine: bcm2835: Fix interrupt race on RT Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 120/137] dmaengine: bcm2835: Fix abort of transactions Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 121/137] dmaengine: imx-dma: fix wrong callback invoke Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 122/137] usb: phy: am335x: fix race condition in _probe Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 123/137] usb: gadget: udc: net2272: Fix bitwise and boolean operations Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 124/137] usb: gadget: musb: fix short isoc packets with inventra dma Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 125/137] scsi: aic94xx: fix module loading Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 126/137] KVM: x86: work around leak of uninitialized stack contents (CVE-2019-7222) Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 127/137] kvm: fix kvm_ioctl_create_device() reference counting (CVE-2019-6974) Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 128/137] KVM: nVMX: unconditionally cancel preemption timer in free_nested (CVE-2019-7221) Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 129/137] perf/x86/intel/uncore: Add Node ID mask Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 130/137] x86/MCE: Initialize mce.bank in the case of a fatal error in mce_no_way_out() Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 131/137] perf/core: Dont WARN() for impossible ring-buffer sizes Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 132/137] perf tests evsel-tp-sched: Fix bitwise operator Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 133/137] serial: fix race between flush_to_ldisc and tty_open Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 134/137] oom, oom_reaper: do not enqueue same task twice Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 135/137] PCI: vmd: Free up IRQs on suspend path Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 136/137] IB/hfi1: Add limit test for RC/UC send via loopback Greg Kroah-Hartman 2019-02-11 14:20 ` [PATCH 4.9 137/137] perf: Add support for supplementary event registers Greg Kroah-Hartman 2019-02-11 18:11 ` Andi Kleen 2019-02-11 19:24 ` Greg Kroah-Hartman 2019-02-12 6:31 ` [PATCH 4.9 000/137] 4.9.156-stable review Naresh Kamboju 2019-02-12 10:13 ` Jon Hunter 2019-02-12 10:13 ` Jon Hunter 2019-02-12 15:42 ` shuah 2019-02-12 16:39 ` Guenter Roeck
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=20190211141814.851636102@linuxfoundation.org \ --to=gregkh@linuxfoundation.org \ --cc=ard.biesheuvel@linaro.org \ --cc=arend.vanspriel@broadcom.com \ --cc=bhsharma@redhat.com \ --cc=bp@alien8.de \ --cc=dave.hansen@intel.com \ --cc=eric.snowberg@oracle.com \ --cc=hdegoede@redhat.com \ --cc=joe@perches.com \ --cc=jonathanh@nvidia.com \ --cc=julien.thierry@arm.com \ --cc=linux-efi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@kernel.org \ --cc=marc.zyngier@arm.com \ --cc=matt@codeblueprint.co.uk \ --cc=mingo@kernel.org \ --cc=natechancellor@gmail.com \ --cc=peterz@infradead.org \ --cc=sai.praneeth.prakhya@intel.com \ --cc=sashal@kernel.org \ --cc=sedat.dilek@gmail.com \ --cc=stable@vger.kernel.org \ --cc=tglx@linutronix.de \ --cc=torvalds@linux-foundation.org \ --cc=zhuyifei1999@gmail.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.