提交 e8914c65 编写于 作者: T Trond Myklebust

SUNRPC: Restrict sunrpc client exports

The sunrpc client exports are not meant to be part of any official kernel
API: they can change at the drop of a hat. Mark them as internal functions
using EXPORT_SYMBOL_GPL.
Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
上级 a6eaf8bd
...@@ -51,7 +51,7 @@ rpcauth_register(const struct rpc_authops *ops) ...@@ -51,7 +51,7 @@ rpcauth_register(const struct rpc_authops *ops)
spin_unlock(&rpc_authflavor_lock); spin_unlock(&rpc_authflavor_lock);
return ret; return ret;
} }
EXPORT_SYMBOL(rpcauth_register); EXPORT_SYMBOL_GPL(rpcauth_register);
int int
rpcauth_unregister(const struct rpc_authops *ops) rpcauth_unregister(const struct rpc_authops *ops)
...@@ -69,7 +69,7 @@ rpcauth_unregister(const struct rpc_authops *ops) ...@@ -69,7 +69,7 @@ rpcauth_unregister(const struct rpc_authops *ops)
spin_unlock(&rpc_authflavor_lock); spin_unlock(&rpc_authflavor_lock);
return ret; return ret;
} }
EXPORT_SYMBOL(rpcauth_unregister); EXPORT_SYMBOL_GPL(rpcauth_unregister);
struct rpc_auth * struct rpc_auth *
rpcauth_create(rpc_authflavor_t pseudoflavor, struct rpc_clnt *clnt) rpcauth_create(rpc_authflavor_t pseudoflavor, struct rpc_clnt *clnt)
...@@ -104,7 +104,7 @@ rpcauth_create(rpc_authflavor_t pseudoflavor, struct rpc_clnt *clnt) ...@@ -104,7 +104,7 @@ rpcauth_create(rpc_authflavor_t pseudoflavor, struct rpc_clnt *clnt)
out: out:
return auth; return auth;
} }
EXPORT_SYMBOL(rpcauth_create); EXPORT_SYMBOL_GPL(rpcauth_create);
void void
rpcauth_release(struct rpc_auth *auth) rpcauth_release(struct rpc_auth *auth)
...@@ -154,7 +154,7 @@ rpcauth_init_credcache(struct rpc_auth *auth) ...@@ -154,7 +154,7 @@ rpcauth_init_credcache(struct rpc_auth *auth)
auth->au_credcache = new; auth->au_credcache = new;
return 0; return 0;
} }
EXPORT_SYMBOL(rpcauth_init_credcache); EXPORT_SYMBOL_GPL(rpcauth_init_credcache);
/* /*
* Destroy a list of credentials * Destroy a list of credentials
...@@ -217,7 +217,7 @@ rpcauth_destroy_credcache(struct rpc_auth *auth) ...@@ -217,7 +217,7 @@ rpcauth_destroy_credcache(struct rpc_auth *auth)
kfree(cache); kfree(cache);
} }
} }
EXPORT_SYMBOL(rpcauth_destroy_credcache); EXPORT_SYMBOL_GPL(rpcauth_destroy_credcache);
/* /*
* Remove stale credentials. Avoid sleeping inside the loop. * Remove stale credentials. Avoid sleeping inside the loop.
...@@ -337,7 +337,7 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred, ...@@ -337,7 +337,7 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred,
out: out:
return cred; return cred;
} }
EXPORT_SYMBOL(rpcauth_lookup_credcache); EXPORT_SYMBOL_GPL(rpcauth_lookup_credcache);
struct rpc_cred * struct rpc_cred *
rpcauth_lookupcred(struct rpc_auth *auth, int flags) rpcauth_lookupcred(struct rpc_auth *auth, int flags)
...@@ -356,7 +356,7 @@ rpcauth_lookupcred(struct rpc_auth *auth, int flags) ...@@ -356,7 +356,7 @@ rpcauth_lookupcred(struct rpc_auth *auth, int flags)
put_group_info(acred.group_info); put_group_info(acred.group_info);
return ret; return ret;
} }
EXPORT_SYMBOL(rpcauth_lookupcred); EXPORT_SYMBOL_GPL(rpcauth_lookupcred);
void void
rpcauth_init_cred(struct rpc_cred *cred, const struct auth_cred *acred, rpcauth_init_cred(struct rpc_cred *cred, const struct auth_cred *acred,
...@@ -373,7 +373,7 @@ rpcauth_init_cred(struct rpc_cred *cred, const struct auth_cred *acred, ...@@ -373,7 +373,7 @@ rpcauth_init_cred(struct rpc_cred *cred, const struct auth_cred *acred,
#endif #endif
cred->cr_uid = acred->uid; cred->cr_uid = acred->uid;
} }
EXPORT_SYMBOL(rpcauth_init_cred); EXPORT_SYMBOL_GPL(rpcauth_init_cred);
struct rpc_cred * struct rpc_cred *
rpcauth_bindcred(struct rpc_task *task) rpcauth_bindcred(struct rpc_task *task)
...@@ -442,7 +442,7 @@ put_rpccred(struct rpc_cred *cred) ...@@ -442,7 +442,7 @@ put_rpccred(struct rpc_cred *cred)
out_destroy: out_destroy:
cred->cr_ops->crdestroy(cred); cred->cr_ops->crdestroy(cred);
} }
EXPORT_SYMBOL(put_rpccred); EXPORT_SYMBOL_GPL(put_rpccred);
void void
rpcauth_unbindcred(struct rpc_task *task) rpcauth_unbindcred(struct rpc_task *task)
......
...@@ -345,7 +345,7 @@ rpc_clone_client(struct rpc_clnt *clnt) ...@@ -345,7 +345,7 @@ rpc_clone_client(struct rpc_clnt *clnt)
dprintk("RPC: %s: returned error %d\n", __FUNCTION__, err); dprintk("RPC: %s: returned error %d\n", __FUNCTION__, err);
return ERR_PTR(err); return ERR_PTR(err);
} }
EXPORT_SYMBOL(rpc_clone_client); EXPORT_SYMBOL_GPL(rpc_clone_client);
/* /*
* Properly shut down an RPC client, terminating all outstanding * Properly shut down an RPC client, terminating all outstanding
...@@ -364,7 +364,7 @@ void rpc_shutdown_client(struct rpc_clnt *clnt) ...@@ -364,7 +364,7 @@ void rpc_shutdown_client(struct rpc_clnt *clnt)
rpc_release_client(clnt); rpc_release_client(clnt);
} }
EXPORT_SYMBOL(rpc_shutdown_client); EXPORT_SYMBOL_GPL(rpc_shutdown_client);
/* /*
* Free an RPC client * Free an RPC client
...@@ -469,7 +469,7 @@ struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *old, ...@@ -469,7 +469,7 @@ struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *old,
out: out:
return clnt; return clnt;
} }
EXPORT_SYMBOL(rpc_bind_new_program); EXPORT_SYMBOL_GPL(rpc_bind_new_program);
/* /*
* Default callback for async RPC calls * Default callback for async RPC calls
...@@ -515,13 +515,13 @@ void rpc_clnt_sigmask(struct rpc_clnt *clnt, sigset_t *oldset) ...@@ -515,13 +515,13 @@ void rpc_clnt_sigmask(struct rpc_clnt *clnt, sigset_t *oldset)
{ {
rpc_save_sigmask(oldset, clnt->cl_intr); rpc_save_sigmask(oldset, clnt->cl_intr);
} }
EXPORT_SYMBOL(rpc_clnt_sigmask); EXPORT_SYMBOL_GPL(rpc_clnt_sigmask);
void rpc_clnt_sigunmask(struct rpc_clnt *clnt, sigset_t *oldset) void rpc_clnt_sigunmask(struct rpc_clnt *clnt, sigset_t *oldset)
{ {
rpc_restore_sigmask(oldset); rpc_restore_sigmask(oldset);
} }
EXPORT_SYMBOL(rpc_clnt_sigunmask); EXPORT_SYMBOL_GPL(rpc_clnt_sigunmask);
static static
struct rpc_task *rpc_do_run_task(struct rpc_clnt *clnt, struct rpc_task *rpc_do_run_task(struct rpc_clnt *clnt,
...@@ -577,7 +577,7 @@ int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, int flags) ...@@ -577,7 +577,7 @@ int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, int flags)
rpc_put_task(task); rpc_put_task(task);
return status; return status;
} }
EXPORT_SYMBOL(rpc_call_sync); EXPORT_SYMBOL_GPL(rpc_call_sync);
/** /**
* rpc_call_async - Perform an asynchronous RPC call * rpc_call_async - Perform an asynchronous RPC call
...@@ -599,7 +599,7 @@ rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg, int flags, ...@@ -599,7 +599,7 @@ rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg, int flags,
rpc_put_task(task); rpc_put_task(task);
return 0; return 0;
} }
EXPORT_SYMBOL(rpc_call_async); EXPORT_SYMBOL_GPL(rpc_call_async);
/** /**
* rpc_run_task - Allocate a new RPC task, then run rpc_execute against it * rpc_run_task - Allocate a new RPC task, then run rpc_execute against it
...@@ -614,7 +614,7 @@ struct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags, ...@@ -614,7 +614,7 @@ struct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags,
{ {
return rpc_do_run_task(clnt, NULL, flags, tk_ops, data); return rpc_do_run_task(clnt, NULL, flags, tk_ops, data);
} }
EXPORT_SYMBOL(rpc_run_task); EXPORT_SYMBOL_GPL(rpc_run_task);
void void
rpc_call_setup(struct rpc_task *task, struct rpc_message *msg, int flags) rpc_call_setup(struct rpc_task *task, struct rpc_message *msg, int flags)
...@@ -632,7 +632,7 @@ rpc_call_setup(struct rpc_task *task, struct rpc_message *msg, int flags) ...@@ -632,7 +632,7 @@ rpc_call_setup(struct rpc_task *task, struct rpc_message *msg, int flags)
else else
task->tk_action = rpc_exit_task; task->tk_action = rpc_exit_task;
} }
EXPORT_SYMBOL(rpc_call_setup); EXPORT_SYMBOL_GPL(rpc_call_setup);
/** /**
* rpc_peeraddr - extract remote peer address from clnt's xprt * rpc_peeraddr - extract remote peer address from clnt's xprt
...@@ -679,7 +679,7 @@ rpc_setbufsize(struct rpc_clnt *clnt, unsigned int sndsize, unsigned int rcvsize ...@@ -679,7 +679,7 @@ rpc_setbufsize(struct rpc_clnt *clnt, unsigned int sndsize, unsigned int rcvsize
if (xprt->ops->set_buffer_size) if (xprt->ops->set_buffer_size)
xprt->ops->set_buffer_size(xprt, sndsize, rcvsize); xprt->ops->set_buffer_size(xprt, sndsize, rcvsize);
} }
EXPORT_SYMBOL(rpc_setbufsize); EXPORT_SYMBOL_GPL(rpc_setbufsize);
/* /*
* Return size of largest payload RPC client can support, in bytes * Return size of largest payload RPC client can support, in bytes
...@@ -719,7 +719,7 @@ rpc_restart_call(struct rpc_task *task) ...@@ -719,7 +719,7 @@ rpc_restart_call(struct rpc_task *task)
task->tk_action = call_start; task->tk_action = call_start;
} }
EXPORT_SYMBOL(rpc_restart_call); EXPORT_SYMBOL_GPL(rpc_restart_call);
/* /*
* 0. Initial state * 0. Initial state
...@@ -1529,7 +1529,7 @@ struct rpc_task *rpc_call_null(struct rpc_clnt *clnt, struct rpc_cred *cred, int ...@@ -1529,7 +1529,7 @@ struct rpc_task *rpc_call_null(struct rpc_clnt *clnt, struct rpc_cred *cred, int
}; };
return rpc_do_run_task(clnt, &msg, flags, &rpc_default_ops, NULL); return rpc_do_run_task(clnt, &msg, flags, &rpc_default_ops, NULL);
} }
EXPORT_SYMBOL(rpc_call_null); EXPORT_SYMBOL_GPL(rpc_call_null);
#ifdef RPC_DEBUG #ifdef RPC_DEBUG
void rpc_show_tasks(void) void rpc_show_tasks(void)
......
...@@ -243,7 +243,7 @@ void rpc_init_wait_queue(struct rpc_wait_queue *queue, const char *qname) ...@@ -243,7 +243,7 @@ void rpc_init_wait_queue(struct rpc_wait_queue *queue, const char *qname)
{ {
__rpc_init_priority_wait_queue(queue, qname, 0); __rpc_init_priority_wait_queue(queue, qname, 0);
} }
EXPORT_SYMBOL(rpc_init_wait_queue); EXPORT_SYMBOL_GPL(rpc_init_wait_queue);
static int rpc_wait_bit_interruptible(void *word) static int rpc_wait_bit_interruptible(void *word)
{ {
...@@ -303,7 +303,7 @@ int __rpc_wait_for_completion_task(struct rpc_task *task, int (*action)(void *)) ...@@ -303,7 +303,7 @@ int __rpc_wait_for_completion_task(struct rpc_task *task, int (*action)(void *))
return wait_on_bit(&task->tk_runstate, RPC_TASK_ACTIVE, return wait_on_bit(&task->tk_runstate, RPC_TASK_ACTIVE,
action, TASK_INTERRUPTIBLE); action, TASK_INTERRUPTIBLE);
} }
EXPORT_SYMBOL(__rpc_wait_for_completion_task); EXPORT_SYMBOL_GPL(__rpc_wait_for_completion_task);
/* /*
* Make an RPC task runnable. * Make an RPC task runnable.
...@@ -373,7 +373,7 @@ void rpc_sleep_on(struct rpc_wait_queue *q, struct rpc_task *task, ...@@ -373,7 +373,7 @@ void rpc_sleep_on(struct rpc_wait_queue *q, struct rpc_task *task,
__rpc_sleep_on(q, task, action, timer); __rpc_sleep_on(q, task, action, timer);
spin_unlock_bh(&q->lock); spin_unlock_bh(&q->lock);
} }
EXPORT_SYMBOL(rpc_sleep_on); EXPORT_SYMBOL_GPL(rpc_sleep_on);
/** /**
* __rpc_do_wake_up_task - wake up a single rpc_task * __rpc_do_wake_up_task - wake up a single rpc_task
...@@ -445,7 +445,7 @@ void rpc_wake_up_task(struct rpc_task *task) ...@@ -445,7 +445,7 @@ void rpc_wake_up_task(struct rpc_task *task)
} }
rcu_read_unlock_bh(); rcu_read_unlock_bh();
} }
EXPORT_SYMBOL(rpc_wake_up_task); EXPORT_SYMBOL_GPL(rpc_wake_up_task);
/* /*
* Wake up the next task on a priority queue. * Wake up the next task on a priority queue.
...@@ -521,7 +521,7 @@ struct rpc_task * rpc_wake_up_next(struct rpc_wait_queue *queue) ...@@ -521,7 +521,7 @@ struct rpc_task * rpc_wake_up_next(struct rpc_wait_queue *queue)
return task; return task;
} }
EXPORT_SYMBOL(rpc_wake_up_next); EXPORT_SYMBOL_GPL(rpc_wake_up_next);
/** /**
* rpc_wake_up - wake up all rpc_tasks * rpc_wake_up - wake up all rpc_tasks
...@@ -547,7 +547,7 @@ void rpc_wake_up(struct rpc_wait_queue *queue) ...@@ -547,7 +547,7 @@ void rpc_wake_up(struct rpc_wait_queue *queue)
spin_unlock(&queue->lock); spin_unlock(&queue->lock);
rcu_read_unlock_bh(); rcu_read_unlock_bh();
} }
EXPORT_SYMBOL(rpc_wake_up); EXPORT_SYMBOL_GPL(rpc_wake_up);
/** /**
* rpc_wake_up_status - wake up all rpc_tasks and set their status value. * rpc_wake_up_status - wake up all rpc_tasks and set their status value.
...@@ -576,7 +576,7 @@ void rpc_wake_up_status(struct rpc_wait_queue *queue, int status) ...@@ -576,7 +576,7 @@ void rpc_wake_up_status(struct rpc_wait_queue *queue, int status)
spin_unlock(&queue->lock); spin_unlock(&queue->lock);
rcu_read_unlock_bh(); rcu_read_unlock_bh();
} }
EXPORT_SYMBOL(rpc_wake_up_status); EXPORT_SYMBOL_GPL(rpc_wake_up_status);
static void __rpc_atrun(struct rpc_task *task) static void __rpc_atrun(struct rpc_task *task)
{ {
...@@ -591,7 +591,7 @@ void rpc_delay(struct rpc_task *task, unsigned long delay) ...@@ -591,7 +591,7 @@ void rpc_delay(struct rpc_task *task, unsigned long delay)
task->tk_timeout = delay; task->tk_timeout = delay;
rpc_sleep_on(&delay_queue, task, NULL, __rpc_atrun); rpc_sleep_on(&delay_queue, task, NULL, __rpc_atrun);
} }
EXPORT_SYMBOL(rpc_delay); EXPORT_SYMBOL_GPL(rpc_delay);
/* /*
* Helper to call task->tk_ops->rpc_call_prepare * Helper to call task->tk_ops->rpc_call_prepare
...@@ -620,7 +620,7 @@ void rpc_exit_task(struct rpc_task *task) ...@@ -620,7 +620,7 @@ void rpc_exit_task(struct rpc_task *task)
} }
} }
} }
EXPORT_SYMBOL(rpc_exit_task); EXPORT_SYMBOL_GPL(rpc_exit_task);
void rpc_release_calldata(const struct rpc_call_ops *ops, void *calldata) void rpc_release_calldata(const struct rpc_call_ops *ops, void *calldata)
{ {
...@@ -737,7 +737,7 @@ void rpc_execute(struct rpc_task *task) ...@@ -737,7 +737,7 @@ void rpc_execute(struct rpc_task *task)
rpc_set_running(task); rpc_set_running(task);
__rpc_execute(task); __rpc_execute(task);
} }
EXPORT_SYMBOL(rpc_execute); EXPORT_SYMBOL_GPL(rpc_execute);
static void rpc_async_schedule(struct work_struct *work) static void rpc_async_schedule(struct work_struct *work)
{ {
...@@ -855,7 +855,7 @@ void rpc_init_task(struct rpc_task *task, struct rpc_clnt *clnt, int flags, cons ...@@ -855,7 +855,7 @@ void rpc_init_task(struct rpc_task *task, struct rpc_clnt *clnt, int flags, cons
dprintk("RPC: new task initialized, procpid %u\n", dprintk("RPC: new task initialized, procpid %u\n",
task_pid_nr(current)); task_pid_nr(current));
} }
EXPORT_SYMBOL(rpc_init_task); EXPORT_SYMBOL_GPL(rpc_init_task);
static struct rpc_task * static struct rpc_task *
rpc_alloc_task(void) rpc_alloc_task(void)
...@@ -910,7 +910,7 @@ void rpc_put_task(struct rpc_task *task) ...@@ -910,7 +910,7 @@ void rpc_put_task(struct rpc_task *task)
call_rcu_bh(&task->u.tk_rcu, rpc_free_task); call_rcu_bh(&task->u.tk_rcu, rpc_free_task);
rpc_release_calldata(tk_ops, calldata); rpc_release_calldata(tk_ops, calldata);
} }
EXPORT_SYMBOL(rpc_put_task); EXPORT_SYMBOL_GPL(rpc_put_task);
static void rpc_release_task(struct rpc_task *task) static void rpc_release_task(struct rpc_task *task)
{ {
...@@ -967,7 +967,7 @@ void rpc_killall_tasks(struct rpc_clnt *clnt) ...@@ -967,7 +967,7 @@ void rpc_killall_tasks(struct rpc_clnt *clnt)
} }
spin_unlock(&clnt->cl_lock); spin_unlock(&clnt->cl_lock);
} }
EXPORT_SYMBOL(rpc_killall_tasks); EXPORT_SYMBOL_GPL(rpc_killall_tasks);
int rpciod_up(void) int rpciod_up(void)
{ {
......
...@@ -118,7 +118,7 @@ struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt) ...@@ -118,7 +118,7 @@ struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt)
new = kcalloc(clnt->cl_maxproc, sizeof(struct rpc_iostats), GFP_KERNEL); new = kcalloc(clnt->cl_maxproc, sizeof(struct rpc_iostats), GFP_KERNEL);
return new; return new;
} }
EXPORT_SYMBOL(rpc_alloc_iostats); EXPORT_SYMBOL_GPL(rpc_alloc_iostats);
/** /**
* rpc_free_iostats - release an rpc_iostats structure * rpc_free_iostats - release an rpc_iostats structure
...@@ -129,7 +129,7 @@ void rpc_free_iostats(struct rpc_iostats *stats) ...@@ -129,7 +129,7 @@ void rpc_free_iostats(struct rpc_iostats *stats)
{ {
kfree(stats); kfree(stats);
} }
EXPORT_SYMBOL(rpc_free_iostats); EXPORT_SYMBOL_GPL(rpc_free_iostats);
/** /**
* rpc_count_iostats - tally up per-task stats * rpc_count_iostats - tally up per-task stats
...@@ -215,7 +215,7 @@ void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) ...@@ -215,7 +215,7 @@ void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt)
metrics->om_execute * MILLISECS_PER_JIFFY); metrics->om_execute * MILLISECS_PER_JIFFY);
} }
} }
EXPORT_SYMBOL(rpc_print_iostats); EXPORT_SYMBOL_GPL(rpc_print_iostats);
/* /*
* Register/unregister RPC proc files * Register/unregister RPC proc files
...@@ -241,14 +241,14 @@ rpc_proc_register(struct rpc_stat *statp) ...@@ -241,14 +241,14 @@ rpc_proc_register(struct rpc_stat *statp)
{ {
return do_register(statp->program->name, statp, &rpc_proc_fops); return do_register(statp->program->name, statp, &rpc_proc_fops);
} }
EXPORT_SYMBOL(rpc_proc_register); EXPORT_SYMBOL_GPL(rpc_proc_register);
void void
rpc_proc_unregister(const char *name) rpc_proc_unregister(const char *name)
{ {
remove_proc_entry(name, proc_net_rpc); remove_proc_entry(name, proc_net_rpc);
} }
EXPORT_SYMBOL(rpc_proc_unregister); EXPORT_SYMBOL_GPL(rpc_proc_unregister);
struct proc_dir_entry * struct proc_dir_entry *
svc_proc_register(struct svc_stat *statp, const struct file_operations *fops) svc_proc_register(struct svc_stat *statp, const struct file_operations *fops)
......
...@@ -23,16 +23,16 @@ ...@@ -23,16 +23,16 @@
* Declare the debug flags here * Declare the debug flags here
*/ */
unsigned int rpc_debug; unsigned int rpc_debug;
EXPORT_SYMBOL(rpc_debug); EXPORT_SYMBOL_GPL(rpc_debug);
unsigned int nfs_debug; unsigned int nfs_debug;
EXPORT_SYMBOL(nfs_debug); EXPORT_SYMBOL_GPL(nfs_debug);
unsigned int nfsd_debug; unsigned int nfsd_debug;
EXPORT_SYMBOL(nfsd_debug); EXPORT_SYMBOL_GPL(nfsd_debug);
unsigned int nlm_debug; unsigned int nlm_debug;
EXPORT_SYMBOL(nlm_debug); EXPORT_SYMBOL_GPL(nlm_debug);
#ifdef RPC_DEBUG #ifdef RPC_DEBUG
......
...@@ -992,7 +992,7 @@ void xprt_set_timeout(struct rpc_timeout *to, unsigned int retr, unsigned long i ...@@ -992,7 +992,7 @@ void xprt_set_timeout(struct rpc_timeout *to, unsigned int retr, unsigned long i
to->to_retries = retr; to->to_retries = retr;
to->to_exponential = 0; to->to_exponential = 0;
} }
EXPORT_SYMBOL(xprt_set_timeout); EXPORT_SYMBOL_GPL(xprt_set_timeout);
/** /**
* xprt_create_transport - create an RPC transport * xprt_create_transport - create an RPC transport
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册