cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

file.c (1187B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * file.c
      4 *
      5 * Copyright (c) 1999 Al Smith
      6 *
      7 * Portions derived from work (c) 1995,1996 Christian Vogelgsang.
      8 */
      9
     10#include <linux/buffer_head.h>
     11#include "efs.h"
     12
     13int efs_get_block(struct inode *inode, sector_t iblock,
     14		  struct buffer_head *bh_result, int create)
     15{
     16	int error = -EROFS;
     17	long phys;
     18
     19	if (create)
     20		return error;
     21	if (iblock >= inode->i_blocks) {
     22#ifdef DEBUG
     23		/*
     24		 * i have no idea why this happens as often as it does
     25		 */
     26		pr_warn("%s(): block %d >= %ld (filesize %ld)\n",
     27			__func__, block, inode->i_blocks, inode->i_size);
     28#endif
     29		return 0;
     30	}
     31	phys = efs_map_block(inode, iblock);
     32	if (phys)
     33		map_bh(bh_result, inode->i_sb, phys);
     34	return 0;
     35}
     36
     37int efs_bmap(struct inode *inode, efs_block_t block) {
     38
     39	if (block < 0) {
     40		pr_warn("%s(): block < 0\n", __func__);
     41		return 0;
     42	}
     43
     44	/* are we about to read past the end of a file ? */
     45	if (!(block < inode->i_blocks)) {
     46#ifdef DEBUG
     47		/*
     48		 * i have no idea why this happens as often as it does
     49		 */
     50		pr_warn("%s(): block %d >= %ld (filesize %ld)\n",
     51			__func__, block, inode->i_blocks, inode->i_size);
     52#endif
     53		return 0;
     54	}
     55
     56	return efs_map_block(inode, block);
     57}