]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
fs/proc/vmcore: move vmcore definitions out of kcore.h
authorDavid Hildenbrand <david@redhat.com>
Wed, 4 Dec 2024 12:54:36 +0000 (13:54 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 27 Jan 2025 14:39:07 +0000 (09:39 -0500)
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>
fs/proc/vmcore.c
include/linux/crash_dump.h
include/linux/kcore.h

index 7511837d81a20a9975f7d02caa692ffe2041d173..c081b130aba3db7393990e177778b4ee4ca237fc 100644 (file)
@@ -53,6 +53,12 @@ static u64 vmcore_size;
 static struct proc_dir_entry *proc_vmcore;
 
 #ifdef CONFIG_PROC_VMCORE_DEVICE_DUMP
+struct vmcoredd_node {
+       struct list_head list;  /* List of dumps */
+       void *buf;              /* Buffer containing device's dump */
+       unsigned int size;      /* Size of the buffer */
+};
+
 /* Device Dump list and mutex to synchronize access to list */
 static LIST_HEAD(vmcoredd_list);
 
@@ -322,10 +328,10 @@ static int vmcoredd_mmap_dumps(struct vm_area_struct *vma, unsigned long dst,
  */
 static ssize_t __read_vmcore(struct iov_iter *iter, loff_t *fpos)
 {
+       struct vmcore_range *m = NULL;
        ssize_t acc = 0, tmp;
        size_t tsz;
        u64 start;
-       struct vmcore *m = NULL;
 
        if (!iov_iter_count(iter) || *fpos >= vmcore_size)
                return 0;
@@ -580,7 +586,7 @@ static int mmap_vmcore(struct file *file, struct vm_area_struct *vma)
 {
        size_t size = vma->vm_end - vma->vm_start;
        u64 start, end, len, tsz;
-       struct vmcore *m;
+       struct vmcore_range *m;
 
        start = (u64)vma->vm_pgoff << PAGE_SHIFT;
        end = start + size;
@@ -703,16 +709,16 @@ static const struct proc_ops vmcore_proc_ops = {
        .proc_mmap      = mmap_vmcore,
 };
 
-static struct vmcore* __init get_new_element(void)
+static struct vmcore_range * __init get_new_element(void)
 {
-       return kzalloc(sizeof(struct vmcore), GFP_KERNEL);
+       return kzalloc(sizeof(struct vmcore_range), GFP_KERNEL);
 }
 
 static u64 get_vmcore_size(size_t elfsz, size_t elfnotesegsz,
                           struct list_head *vc_list)
 {
+       struct vmcore_range *m;
        u64 size;
-       struct vmcore *m;
 
        size = elfsz + elfnotesegsz;
        list_for_each_entry(m, vc_list, list) {
@@ -1110,11 +1116,11 @@ static int __init process_ptload_program_headers_elf64(char *elfptr,
                                                size_t elfnotes_sz,
                                                struct list_head *vc_list)
 {
+       struct vmcore_range *new;
        int i;
        Elf64_Ehdr *ehdr_ptr;
        Elf64_Phdr *phdr_ptr;
        loff_t vmcore_off;
-       struct vmcore *new;
 
        ehdr_ptr = (Elf64_Ehdr *)elfptr;
        phdr_ptr = (Elf64_Phdr*)(elfptr + sizeof(Elf64_Ehdr)); /* PT_NOTE hdr */
@@ -1153,11 +1159,11 @@ static int __init process_ptload_program_headers_elf32(char *elfptr,
                                                size_t elfnotes_sz,
                                                struct list_head *vc_list)
 {
+       struct vmcore_range *new;
        int i;
        Elf32_Ehdr *ehdr_ptr;
        Elf32_Phdr *phdr_ptr;
        loff_t vmcore_off;
-       struct vmcore *new;
 
        ehdr_ptr = (Elf32_Ehdr *)elfptr;
        phdr_ptr = (Elf32_Phdr*)(elfptr + sizeof(Elf32_Ehdr)); /* PT_NOTE hdr */
@@ -1195,8 +1201,8 @@ static int __init process_ptload_program_headers_elf32(char *elfptr,
 static void set_vmcore_list_offsets(size_t elfsz, size_t elfnotes_sz,
                                    struct list_head *vc_list)
 {
+       struct vmcore_range *m;
        loff_t vmcore_off;
-       struct vmcore *m;
 
        /* Skip ELF header, program headers and ELF note segment. */
        vmcore_off = elfsz + elfnotes_sz;
@@ -1605,9 +1611,9 @@ void vmcore_cleanup(void)
 
        /* clear the vmcore list. */
        while (!list_empty(&vmcore_list)) {
-               struct vmcore *m;
+               struct vmcore_range *m;
 
-               m = list_first_entry(&vmcore_list, struct vmcore, list);
+               m = list_first_entry(&vmcore_list, struct vmcore_range, list);
                list_del(&m->list);
                kfree(m);
        }
index acc55626afdcde6c4de62e76022d98c86b2b9c9d..788a45061f35db5d81e7db128a4823c490601415 100644 (file)
@@ -114,6 +114,13 @@ struct vmcore_cb {
 extern void register_vmcore_cb(struct vmcore_cb *cb);
 extern void unregister_vmcore_cb(struct vmcore_cb *cb);
 
+struct vmcore_range {
+       struct list_head list;
+       unsigned long long paddr;
+       unsigned long long size;
+       loff_t offset;
+};
+
 #else /* !CONFIG_CRASH_DUMP */
 static inline bool is_kdump_kernel(void) { return false; }
 #endif /* CONFIG_CRASH_DUMP */
index 86c0f1d189988c78df5debe7d219ad72ed05321e..9a2fa013c91def69aeac584eb9fbf4089a9a1102 100644 (file)
@@ -20,19 +20,6 @@ struct kcore_list {
        int type;
 };
 
-struct vmcore {
-       struct list_head list;
-       unsigned long long paddr;
-       unsigned long long size;
-       loff_t offset;
-};
-
-struct vmcoredd_node {
-       struct list_head list;  /* List of dumps */
-       void *buf;              /* Buffer containing device's dump */
-       unsigned int size;      /* Size of the buffer */
-};
-
 #ifdef CONFIG_PROC_KCORE
 void __init kclist_add(struct kcore_list *, void *, size_t, int type);