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

nfs4getroot.c (1011B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3* Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
      4* Written by David Howells (dhowells@redhat.com)
      5*/
      6
      7#include <linux/nfs_fs.h>
      8#include "nfs4_fs.h"
      9#include "internal.h"
     10
     11#define NFSDBG_FACILITY		NFSDBG_CLIENT
     12
     13int nfs4_get_rootfh(struct nfs_server *server, struct nfs_fh *mntfh, bool auth_probe)
     14{
     15	struct nfs_fsinfo fsinfo;
     16	int ret = -ENOMEM;
     17
     18	fsinfo.fattr = nfs_alloc_fattr();
     19	if (fsinfo.fattr == NULL)
     20		goto out;
     21
     22	/* Start by getting the root filehandle from the server */
     23	ret = nfs4_proc_get_rootfh(server, mntfh, &fsinfo, auth_probe);
     24	if (ret < 0) {
     25		dprintk("nfs4_get_rootfh: getroot error = %d\n", -ret);
     26		goto out;
     27	}
     28
     29	if (!(fsinfo.fattr->valid & NFS_ATTR_FATTR_TYPE)
     30			|| !S_ISDIR(fsinfo.fattr->mode)) {
     31		printk(KERN_ERR "nfs4_get_rootfh:"
     32		       " getroot encountered non-directory\n");
     33		ret = -ENOTDIR;
     34		goto out;
     35	}
     36
     37	memcpy(&server->fsid, &fsinfo.fattr->fsid, sizeof(server->fsid));
     38out:
     39	nfs_free_fattr(fsinfo.fattr);
     40	return ret;
     41}