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

nfs_ssc.c (2071B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * Helper for knfsd's SSC to access ops in NFS client modules
      4 *
      5 * Author: Dai Ngo <dai.ngo@oracle.com>
      6 *
      7 * Copyright (c) 2020, Oracle and/or its affiliates.
      8 */
      9
     10#include <linux/module.h>
     11#include <linux/fs.h>
     12#include <linux/nfs_ssc.h>
     13#include "../nfs/nfs4_fs.h"
     14
     15MODULE_LICENSE("GPL");
     16
     17struct nfs_ssc_client_ops_tbl nfs_ssc_client_tbl;
     18EXPORT_SYMBOL_GPL(nfs_ssc_client_tbl);
     19
     20#ifdef CONFIG_NFS_V4_2
     21/**
     22 * nfs42_ssc_register - install the NFS_V4 client ops in the nfs_ssc_client_tbl
     23 * @ops: NFS_V4 ops to be installed
     24 *
     25 * Return values:
     26 *   None
     27 */
     28void nfs42_ssc_register(const struct nfs4_ssc_client_ops *ops)
     29{
     30	nfs_ssc_client_tbl.ssc_nfs4_ops = ops;
     31}
     32EXPORT_SYMBOL_GPL(nfs42_ssc_register);
     33
     34/**
     35 * nfs42_ssc_unregister - uninstall the NFS_V4 client ops from
     36 *				the nfs_ssc_client_tbl
     37 * @ops: ops to be uninstalled
     38 *
     39 * Return values:
     40 *   None
     41 */
     42void nfs42_ssc_unregister(const struct nfs4_ssc_client_ops *ops)
     43{
     44	if (nfs_ssc_client_tbl.ssc_nfs4_ops != ops)
     45		return;
     46
     47	nfs_ssc_client_tbl.ssc_nfs4_ops = NULL;
     48}
     49EXPORT_SYMBOL_GPL(nfs42_ssc_unregister);
     50#endif /* CONFIG_NFS_V4_2 */
     51
     52#ifdef CONFIG_NFS_V4_2
     53/**
     54 * nfs_ssc_register - install the NFS_FS client ops in the nfs_ssc_client_tbl
     55 * @ops: NFS_FS ops to be installed
     56 *
     57 * Return values:
     58 *   None
     59 */
     60void nfs_ssc_register(const struct nfs_ssc_client_ops *ops)
     61{
     62	nfs_ssc_client_tbl.ssc_nfs_ops = ops;
     63}
     64EXPORT_SYMBOL_GPL(nfs_ssc_register);
     65
     66/**
     67 * nfs_ssc_unregister - uninstall the NFS_FS client ops from
     68 *				the nfs_ssc_client_tbl
     69 * @ops: ops to be uninstalled
     70 *
     71 * Return values:
     72 *   None
     73 */
     74void nfs_ssc_unregister(const struct nfs_ssc_client_ops *ops)
     75{
     76	if (nfs_ssc_client_tbl.ssc_nfs_ops != ops)
     77		return;
     78	nfs_ssc_client_tbl.ssc_nfs_ops = NULL;
     79}
     80EXPORT_SYMBOL_GPL(nfs_ssc_unregister);
     81
     82#else
     83void nfs_ssc_register(const struct nfs_ssc_client_ops *ops)
     84{
     85}
     86EXPORT_SYMBOL_GPL(nfs_ssc_register);
     87
     88void nfs_ssc_unregister(const struct nfs_ssc_client_ops *ops)
     89{
     90}
     91EXPORT_SYMBOL_GPL(nfs_ssc_unregister);
     92#endif /* CONFIG_NFS_V4_2 */