Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

fs/proc/vmcore: move vmcore definitions out of kcore.h

These vmcore defines are not related to /proc/kcore, move them out.

We'll move "struct vmcoredd_node" to vmcore.c, because it is only used
internally. While "struct vmcore" is only used internally for now,
we're planning on using it from inline functions in crash_dump.h next,
so move it to crash_dump.h.

While at it, rename "struct vmcore" to "struct vmcore_range", which is a
more suitable name and will make the usage of it outside of vmcore.c
clearer.

Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20241204125444.1734652-6-david@redhat.com>
Acked-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

authored by

David Hildenbrand and committed by
Michael S. Tsirkin
819403c8 8e386957

+23 -23
+16 -10
fs/proc/vmcore.c
··· 53 53 static struct proc_dir_entry *proc_vmcore; 54 54 55 55 #ifdef CONFIG_PROC_VMCORE_DEVICE_DUMP 56 + struct vmcoredd_node { 57 + struct list_head list; /* List of dumps */ 58 + void *buf; /* Buffer containing device's dump */ 59 + unsigned int size; /* Size of the buffer */ 60 + }; 61 + 56 62 /* Device Dump list and mutex to synchronize access to list */ 57 63 static LIST_HEAD(vmcoredd_list); 58 64 ··· 328 322 */ 329 323 static ssize_t __read_vmcore(struct iov_iter *iter, loff_t *fpos) 330 324 { 325 + struct vmcore_range *m = NULL; 331 326 ssize_t acc = 0, tmp; 332 327 size_t tsz; 333 328 u64 start; 334 - struct vmcore *m = NULL; 335 329 336 330 if (!iov_iter_count(iter) || *fpos >= vmcore_size) 337 331 return 0; ··· 586 580 { 587 581 size_t size = vma->vm_end - vma->vm_start; 588 582 u64 start, end, len, tsz; 589 - struct vmcore *m; 583 + struct vmcore_range *m; 590 584 591 585 start = (u64)vma->vm_pgoff << PAGE_SHIFT; 592 586 end = start + size; ··· 709 703 .proc_mmap = mmap_vmcore, 710 704 }; 711 705 712 - static struct vmcore* __init get_new_element(void) 706 + static struct vmcore_range * __init get_new_element(void) 713 707 { 714 - return kzalloc(sizeof(struct vmcore), GFP_KERNEL); 708 + return kzalloc(sizeof(struct vmcore_range), GFP_KERNEL); 715 709 } 716 710 717 711 static u64 get_vmcore_size(size_t elfsz, size_t elfnotesegsz, 718 712 struct list_head *vc_list) 719 713 { 714 + struct vmcore_range *m; 720 715 u64 size; 721 - struct vmcore *m; 722 716 723 717 size = elfsz + elfnotesegsz; 724 718 list_for_each_entry(m, vc_list, list) { ··· 1116 1110 size_t elfnotes_sz, 1117 1111 struct list_head *vc_list) 1118 1112 { 1113 + struct vmcore_range *new; 1119 1114 int i; 1120 1115 Elf64_Ehdr *ehdr_ptr; 1121 1116 Elf64_Phdr *phdr_ptr; 1122 1117 loff_t vmcore_off; 1123 - struct vmcore *new; 1124 1118 1125 1119 ehdr_ptr = (Elf64_Ehdr *)elfptr; 1126 1120 phdr_ptr = (Elf64_Phdr*)(elfptr + sizeof(Elf64_Ehdr)); /* PT_NOTE hdr */ ··· 1159 1153 size_t elfnotes_sz, 1160 1154 struct list_head *vc_list) 1161 1155 { 1156 + struct vmcore_range *new; 1162 1157 int i; 1163 1158 Elf32_Ehdr *ehdr_ptr; 1164 1159 Elf32_Phdr *phdr_ptr; 1165 1160 loff_t vmcore_off; 1166 - struct vmcore *new; 1167 1161 1168 1162 ehdr_ptr = (Elf32_Ehdr *)elfptr; 1169 1163 phdr_ptr = (Elf32_Phdr*)(elfptr + sizeof(Elf32_Ehdr)); /* PT_NOTE hdr */ ··· 1201 1195 static void set_vmcore_list_offsets(size_t elfsz, size_t elfnotes_sz, 1202 1196 struct list_head *vc_list) 1203 1197 { 1198 + struct vmcore_range *m; 1204 1199 loff_t vmcore_off; 1205 - struct vmcore *m; 1206 1200 1207 1201 /* Skip ELF header, program headers and ELF note segment. */ 1208 1202 vmcore_off = elfsz + elfnotes_sz; ··· 1611 1605 1612 1606 /* clear the vmcore list. */ 1613 1607 while (!list_empty(&vmcore_list)) { 1614 - struct vmcore *m; 1608 + struct vmcore_range *m; 1615 1609 1616 - m = list_first_entry(&vmcore_list, struct vmcore, list); 1610 + m = list_first_entry(&vmcore_list, struct vmcore_range, list); 1617 1611 list_del(&m->list); 1618 1612 kfree(m); 1619 1613 }
+7
include/linux/crash_dump.h
··· 114 114 extern void register_vmcore_cb(struct vmcore_cb *cb); 115 115 extern void unregister_vmcore_cb(struct vmcore_cb *cb); 116 116 117 + struct vmcore_range { 118 + struct list_head list; 119 + unsigned long long paddr; 120 + unsigned long long size; 121 + loff_t offset; 122 + }; 123 + 117 124 #else /* !CONFIG_CRASH_DUMP */ 118 125 static inline bool is_kdump_kernel(void) { return false; } 119 126 #endif /* CONFIG_CRASH_DUMP */
-13
include/linux/kcore.h
··· 20 20 int type; 21 21 }; 22 22 23 - struct vmcore { 24 - struct list_head list; 25 - unsigned long long paddr; 26 - unsigned long long size; 27 - loff_t offset; 28 - }; 29 - 30 - struct vmcoredd_node { 31 - struct list_head list; /* List of dumps */ 32 - void *buf; /* Buffer containing device's dump */ 33 - unsigned int size; /* Size of the buffer */ 34 - }; 35 - 36 23 #ifdef CONFIG_PROC_KCORE 37 24 void __init kclist_add(struct kcore_list *, void *, size_t, int type); 38 25