lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20230315093008.6b0932a3@canb.auug.org.au>
Date:   Wed, 15 Mar 2023 09:30:08 +1100
From:   Stephen Rothwell <sfr@...b.auug.org.au>
To:     Huacai Chen <chenhuacai@...ngson.cn>,
        Ard Biesheuvel <ardb@...nel.org>
Cc:     Huacai Chen <chenhuacai@...nel.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        Linux Next Mailing List <linux-next@...r.kernel.org>
Subject: linux-next: manual merge of the loongarch tree with the efi-fixes
 tree

Hi all,

Today's linux-next merge of the loongarch tree got conflicts in:

  drivers/firmware/efi/libstub/efi-stub-entry.c
  drivers/firmware/efi/libstub/efi-stub.c

between commit:

  ef3efc2af044 ("efi: libstub: Use relocated version of kernel's struct screen_info")

from the efi-fixes tree and commit:

  d34b13f27dff ("efi/libstub: Call setup_graphics() before handle_kernel_image()")

from the loongarch tree.

I fixed it up (I think, see below) and can carry the fix as necessary.
This is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc drivers/firmware/efi/libstub/efi-stub-entry.c
index 629840696ea0,c00a73a4518f..000000000000
--- a/drivers/firmware/efi/libstub/efi-stub-entry.c
+++ b/drivers/firmware/efi/libstub/efi-stub-entry.c
@@@ -5,19 -5,30 +5,43 @@@
  
  #include "efistub.h"
  
 +#ifndef CONFIG_ARM
 +static struct screen_info *si;
 +
 +struct screen_info *alloc_screen_info(void)
 +{
 +	return si;
 +}
 +
 +void free_screen_info(struct screen_info *si)
 +{
 +}
 +#endif
 +
+ static struct screen_info *setup_graphics(void)
+ {
+ 	unsigned long size;
+ 	efi_status_t status;
+ 	efi_guid_t gop_proto = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
+ 	void **gop_handle = NULL;
+ 	struct screen_info *si = NULL;
+ 
+ 	size = 0;
+ 	status = efi_bs_call(locate_handle, EFI_LOCATE_BY_PROTOCOL,
+ 			     &gop_proto, NULL, &size, gop_handle);
+ 	if (status == EFI_BUFFER_TOO_SMALL) {
+ 		si = alloc_screen_info();
+ 		if (!si)
+ 			return NULL;
+ 		status = efi_setup_gop(si, &gop_proto, size);
+ 		if (status != EFI_SUCCESS) {
+ 			free_screen_info(si);
+ 			return NULL;
+ 		}
+ 	}
+ 	return si;
+ }
+ 
  /*
   * EFI entry point for the generic EFI stub used by ARM, arm64, RISC-V and
   * LoongArch. This is the entrypoint that is described in the PE/COFF header
@@@ -69,13 -83,10 +96,15 @@@ efi_status_t __efiapi efi_pe_entry(efi_
  		return status;
  	}
  
 +#ifndef CONFIG_ARM
 +	/* point si to the relocated copy of struct screen_info */
 +	si = (void *)&screen_info + image_addr - (unsigned long)image->image_base;
 +#endif
 +
  	status = efi_stub_common(handle, image, image_addr, cmdline_ptr);
  
+ 	free_screen_info(si);
+ 
  	efi_free(image_size, image_addr);
  	efi_free(reserve_size, reserve_addr);
  
diff --cc drivers/firmware/efi/libstub/efi-stub.c
index c4b9eccad0f1,bc67af721412..000000000000
--- a/drivers/firmware/efi/libstub/efi-stub.c
+++ b/drivers/firmware/efi/libstub/efi-stub.c
@@@ -47,30 -47,15 +47,6 @@@
  static u64 virtmap_base = EFI_RT_VIRTUAL_BASE;
  static bool flat_va_mapping = (EFI_RT_VIRTUAL_OFFSET != 0);
  
- static struct screen_info *setup_graphics(void)
 -struct screen_info * __weak alloc_screen_info(void)
--{
- 	efi_guid_t gop_proto = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
- 	efi_status_t status;
- 	unsigned long size;
- 	void **gop_handle = NULL;
- 	struct screen_info *si = NULL;
 -	return &screen_info;
 -}
--
- 	size = 0;
- 	status = efi_bs_call(locate_handle, EFI_LOCATE_BY_PROTOCOL,
- 			     &gop_proto, NULL, &size, gop_handle);
- 	if (status == EFI_BUFFER_TOO_SMALL) {
- 		si = alloc_screen_info();
- 		if (!si)
- 			return NULL;
- 		status = efi_setup_gop(si, &gop_proto, size);
- 		if (status != EFI_SUCCESS) {
- 			free_screen_info(si);
- 			return NULL;
- 		}
- 	}
- 	return si;
 -void __weak free_screen_info(struct screen_info *si)
 -{
--}
--
  static void install_memreserve_table(void)
  {
  	struct linux_efi_memreserve *rsv;

Content of type "application/pgp-signature" skipped

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ