Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28b74653 authored by Philipp Rudo's avatar Philipp Rudo Committed by Heiko Carstens
Browse files

s390/kdump: Remove kzalloc_panic



For this function there are only two users, when 1) the elfcorehdr and 2)
the vmcoreinfo is allocated. However a missing vmcoreinfo is not critical
for kdump. So panicking when it cannot be allocated is not required.

Remove kzalloc_panic and adjust its callers accordingly.

Signed-off-by: default avatarPhilipp Rudo <prudo@linux.ibm.com>
Acked-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
parent 2d2e7075
Loading
Loading
Loading
Loading
+12 −15
Original line number Diff line number Diff line
@@ -293,19 +293,6 @@ int remap_oldmem_pfn_range(struct vm_area_struct *vma, unsigned long from,
						       prot);
}

/*
 * Alloc memory and panic in case of ENOMEM
 */
static void *kzalloc_panic(int len)
{
	void *rc;

	rc = kzalloc(len, GFP_KERNEL);
	if (!rc)
		panic("s390 kdump kzalloc (%d) failed", len);
	return rc;
}

static const char *nt_name(Elf64_Word type)
{
	const char *name = "LINUX";
@@ -453,7 +440,9 @@ static void *get_vmcoreinfo_old(unsigned long *size)
		return NULL;
	if (strcmp(nt_name, VMCOREINFO_NOTE_NAME) != 0)
		return NULL;
	vmcoreinfo = kzalloc_panic(note.n_descsz);
	vmcoreinfo = kzalloc(note.n_descsz, GFP_KERNEL);
	if (!vmcoreinfo)
		return NULL;
	if (copy_oldmem_kernel(vmcoreinfo, addr + 24, note.n_descsz)) {
		kfree(vmcoreinfo);
		return NULL;
@@ -661,7 +650,15 @@ int elfcorehdr_alloc(unsigned long long *addr, unsigned long long *size)

	alloc_size = get_elfcorehdr_size(mem_chunk_cnt);

	hdr = kzalloc_panic(alloc_size);
	hdr = kzalloc(alloc_size, GFP_KERNEL);

	/* Without elfcorehdr /proc/vmcore cannot be created. Thus creating
	 * a dump with this crash kernel will fail. Panic now to allow other
	 * dump mechanisms to take over.
	 */
	if (!hdr)
		panic("s390 kdump allocating elfcorehdr failed");

	/* Init elf header */
	ptr = ehdr_init(hdr, mem_chunk_cnt);
	/* Init program headers */