staging: lustre: clean up format string usages
This fixes up the usage of snprintf, strncpy, and format strings in the call to kthread_run to avoid ever accidentally allowing a format string into the thread name. Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1ea12fef83
commit
9edf0f670b
|
@ -1802,7 +1802,7 @@ kiblnd_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed,
|
|||
int
|
||||
kiblnd_thread_start(int (*fn)(void *arg), void *arg, char *name)
|
||||
{
|
||||
struct task_struct *task = kthread_run(fn, arg, name);
|
||||
struct task_struct *task = kthread_run(fn, arg, "%s", name);
|
||||
|
||||
if (IS_ERR(task))
|
||||
return PTR_ERR(task);
|
||||
|
|
|
@ -1005,7 +1005,7 @@ ksocknal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg)
|
|||
int
|
||||
ksocknal_thread_start(int (*fn)(void *arg), void *arg, char *name)
|
||||
{
|
||||
struct task_struct *task = kthread_run(fn, arg, name);
|
||||
struct task_struct *task = kthread_run(fn, arg, "%s", name);
|
||||
|
||||
if (IS_ERR(task))
|
||||
return PTR_ERR(task);
|
||||
|
|
|
@ -800,9 +800,9 @@ static int ldlm_bl_thread_start(struct ldlm_bl_pool *blp)
|
|||
|
||||
init_completion(&bltd.bltd_comp);
|
||||
bltd.bltd_num = atomic_read(&blp->blp_num_threads);
|
||||
snprintf(bltd.bltd_name, sizeof(bltd.bltd_name) - 1,
|
||||
snprintf(bltd.bltd_name, sizeof(bltd.bltd_name),
|
||||
"ldlm_bl_%02d", bltd.bltd_num);
|
||||
task = kthread_run(ldlm_bl_thread_main, &bltd, bltd.bltd_name);
|
||||
task = kthread_run(ldlm_bl_thread_main, &bltd, "%s", bltd.bltd_name);
|
||||
if (IS_ERR(task)) {
|
||||
CERROR("cannot start LDLM thread ldlm_bl_%02d: rc %ld\n",
|
||||
atomic_read(&blp->blp_num_threads), PTR_ERR(task));
|
||||
|
|
|
@ -397,7 +397,7 @@ cfs_wi_sched_create(char *name, struct cfs_cpt_table *cptab,
|
|||
sched->ws_name, sched->ws_nthreads);
|
||||
}
|
||||
|
||||
task = kthread_run(cfs_wi_scheduler, sched, name);
|
||||
task = kthread_run(cfs_wi_scheduler, sched, "%s", name);
|
||||
if (!IS_ERR(task)) {
|
||||
nthrs--;
|
||||
continue;
|
||||
|
|
|
@ -383,8 +383,8 @@ int ptlrpc_start_pinger(void)
|
|||
|
||||
/* CLONE_VM and CLONE_FILES just avoid a needless copy, because we
|
||||
* just drop the VM and FILES in cfs_daemonize_ctxt() right away. */
|
||||
rc = PTR_ERR(kthread_run(ptlrpc_pinger_main,
|
||||
&pinger_thread, pinger_thread.t_name));
|
||||
rc = PTR_ERR(kthread_run(ptlrpc_pinger_main, &pinger_thread,
|
||||
"%s", pinger_thread.t_name));
|
||||
if (IS_ERR_VALUE(rc)) {
|
||||
CERROR("cannot start thread: %d\n", rc);
|
||||
return rc;
|
||||
|
|
|
@ -615,7 +615,7 @@ int ptlrpcd_start(int index, int max, const char *name, struct ptlrpcd_ctl *pc)
|
|||
init_completion(&pc->pc_starting);
|
||||
init_completion(&pc->pc_finishing);
|
||||
spin_lock_init(&pc->pc_lock);
|
||||
strncpy(pc->pc_name, name, sizeof(pc->pc_name) - 1);
|
||||
strlcpy(pc->pc_name, name, sizeof(pc->pc_name));
|
||||
pc->pc_set = ptlrpc_prep_set();
|
||||
if (pc->pc_set == NULL)
|
||||
GOTO(out, rc = -ENOMEM);
|
||||
|
@ -638,7 +638,7 @@ int ptlrpcd_start(int index, int max, const char *name, struct ptlrpcd_ctl *pc)
|
|||
GOTO(out, rc);
|
||||
}
|
||||
|
||||
task = kthread_run(ptlrpcd, pc, pc->pc_name);
|
||||
task = kthread_run(ptlrpcd, pc, "%s", pc->pc_name);
|
||||
if (IS_ERR(task))
|
||||
GOTO(out, rc = PTR_ERR(task));
|
||||
|
||||
|
@ -745,7 +745,7 @@ static int ptlrpcd_init(void)
|
|||
if (ptlrpcds == NULL)
|
||||
GOTO(out, rc = -ENOMEM);
|
||||
|
||||
snprintf(name, 15, "ptlrpcd_rcv");
|
||||
snprintf(name, sizeof(name), "ptlrpcd_rcv");
|
||||
set_bit(LIOD_RECOVERY, &ptlrpcds->pd_thread_rcv.pc_flags);
|
||||
rc = ptlrpcd_start(-1, nthreads, name, &ptlrpcds->pd_thread_rcv);
|
||||
if (rc < 0)
|
||||
|
@ -764,7 +764,7 @@ static int ptlrpcd_init(void)
|
|||
* unnecessary dependency. But how to distribute async RPCs load
|
||||
* among all the ptlrpc daemons becomes another trouble. */
|
||||
for (i = 0; i < nthreads; i++) {
|
||||
snprintf(name, 15, "ptlrpcd_%d", i);
|
||||
snprintf(name, sizeof(name), "ptlrpcd_%d", i);
|
||||
rc = ptlrpcd_start(i, nthreads, name, &ptlrpcds->pd_threads[i]);
|
||||
if (rc < 0)
|
||||
GOTO(out, rc);
|
||||
|
|
|
@ -2718,15 +2718,15 @@ int ptlrpc_start_thread(struct ptlrpc_service_part *svcpt, int wait)
|
|||
spin_unlock(&svcpt->scp_lock);
|
||||
|
||||
if (svcpt->scp_cpt >= 0) {
|
||||
snprintf(thread->t_name, PTLRPC_THR_NAME_LEN, "%s%02d_%03d",
|
||||
snprintf(thread->t_name, sizeof(thread->t_name), "%s%02d_%03d",
|
||||
svc->srv_thread_name, svcpt->scp_cpt, thread->t_id);
|
||||
} else {
|
||||
snprintf(thread->t_name, PTLRPC_THR_NAME_LEN, "%s_%04d",
|
||||
snprintf(thread->t_name, sizeof(thread->t_name), "%s_%04d",
|
||||
svc->srv_thread_name, thread->t_id);
|
||||
}
|
||||
|
||||
CDEBUG(D_RPCTRACE, "starting thread '%s'\n", thread->t_name);
|
||||
rc = PTR_ERR(kthread_run(ptlrpc_main, thread, thread->t_name));
|
||||
rc = PTR_ERR(kthread_run(ptlrpc_main, thread, "%s", thread->t_name));
|
||||
if (IS_ERR_VALUE(rc)) {
|
||||
CERROR("cannot start thread '%s': rc %d\n",
|
||||
thread->t_name, rc);
|
||||
|
|
Loading…
Reference in New Issue