return call_usermodehelper(argv[0], argv, envp, 1); 
return call_usermodehelper_keys(argv[0], argv, envp, NULL, 1); 
static int call_request_key(struct key *key,			    const char *op,			    const char *callout_info){	struct task_struct *tsk = current;	unsigned long flags;	key_serial_t prkey, sskey;	char *argv[10], *envp[3], uid_str[12], gid_str[12];	char key_str[12], keyring_str[3][12];	int i;	/* record the UID and GID */	sprintf(uid_str, "%d", current->fsuid);	sprintf(gid_str, "%d", current->fsgid);	/* we say which key is under construction */	sprintf(key_str, "%d", key->serial);	/* we specify the process's default keyrings */	sprintf(keyring_str[0], "%d",		tsk->thread_keyring ? tsk->thread_keyring->serial : 0);	prkey = 0;	if (tsk->signal->process_keyring)		prkey = tsk->signal->process_keyring->serial;	sskey = 0;	spin_lock_irqsave(&tsk->sighand->siglock, flags);	if (tsk->signal->session_keyring)		sskey = tsk->signal->session_keyring->serial;	spin_unlock_irqrestore(&tsk->sighand->siglock, flags);	if (!sskey)		sskey = tsk->user->session_keyring->serial;	sprintf(keyring_str[1], "%d", prkey);	sprintf(keyring_str[2], "%d", sskey);	/* set up a minimal environment */	i = 0;	envp[i++] = "HOME=/";	envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";	envp[i] = NULL;	/* set up the argument list */	i = 0;	argv[i++] = "/sbin/request-key";	argv[i++] = (char *) op;	argv[i++] = key_str;	argv[i++] = uid_str;	argv[i++] = gid_str;	argv[i++] = keyring_str[0];	argv[i++] = keyring_str[1];	argv[i++] = keyring_str[2];	argv[i++] = callout_info[0] ? (char *) callout_info : "-";	argv[i] = NULL;	/* do it */	return call_usermodehelper(argv[0], argv, envp, 1);} /* end call_request_key() */
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7888e7ff4ee579442128d7d12a9c9dbf2cf7de6a/request_key.c/clean/security/keys/request_key.c