LCOV - code coverage report
Current view: top level - arch/um/kernel - load_file.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 25 0.0 %
Date: 2023-03-27 20:00:47 Functions: 0 2 0.0 %

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0
       2             : /*
       3             :  * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
       4             :  */
       5             : #include <linux/memblock.h>
       6             : #include <os.h>
       7             : 
       8             : #include "um_arch.h"
       9             : 
      10           0 : static int __init __uml_load_file(const char *filename, void *buf, int size)
      11             : {
      12             :         int fd, n;
      13             : 
      14           0 :         fd = os_open_file(filename, of_read(OPENFLAGS()), 0);
      15           0 :         if (fd < 0) {
      16           0 :                 printk(KERN_ERR "Opening '%s' failed - err = %d\n", filename,
      17             :                        -fd);
      18           0 :                 return -1;
      19             :         }
      20           0 :         n = os_read_file(fd, buf, size);
      21           0 :         if (n != size) {
      22           0 :                 printk(KERN_ERR "Read of %d bytes from '%s' failed, "
      23             :                        "err = %d\n", size,
      24             :                        filename, -n);
      25           0 :                 return -1;
      26             :         }
      27             : 
      28           0 :         os_close_file(fd);
      29           0 :         return 0;
      30             : }
      31             : 
      32           0 : void *uml_load_file(const char *filename, unsigned long long *size)
      33             : {
      34             :         void *area;
      35             :         int err;
      36             : 
      37           0 :         *size = 0;
      38             : 
      39           0 :         if (!filename)
      40             :                 return NULL;
      41             : 
      42           0 :         err = os_file_size(filename, size);
      43           0 :         if (err)
      44             :                 return NULL;
      45             : 
      46           0 :         if (*size == 0) {
      47           0 :                 printk(KERN_ERR "\"%s\" is empty\n", filename);
      48           0 :                 return NULL;
      49             :         }
      50             : 
      51           0 :         area = memblock_alloc(*size, SMP_CACHE_BYTES);
      52           0 :         if (!area)
      53           0 :                 panic("%s: Failed to allocate %llu bytes\n", __func__, *size);
      54             : 
      55           0 :         if (__uml_load_file(filename, area, *size)) {
      56           0 :                 memblock_free(area, *size);
      57           0 :                 return NULL;
      58             :         }
      59             : 
      60             :         return area;
      61             : }

Generated by: LCOV version 1.14