Lines Matching refs:env

117 	struct kobj_uevent_env *env = NULL;
128 env = kzalloc(sizeof(*env), GFP_KERNEL);
129 if (!env)
134 add_uevent_var(env, "SYNTH_UUID=%.*s", UUID_STRING_LEN, buf))
168 if (add_uevent_var(env, "SYNTH_ARG_%.*s=%.*s",
176 kfree(env);
178 *ret_env = env;
197 struct kobj_uevent_env *env;
213 count - (action_args - buf), &env);
222 r = kobject_uevent_env(kobj, action, env->envp);
223 kfree(env);
252 static int init_uevent_argv(struct kobj_uevent_env *env, const char *subsystem)
254 int buffer_size = sizeof(env->buf) - env->buflen;
257 len = strlcpy(&env->buf[env->buflen], subsystem, buffer_size);
264 env->argv[0] = uevent_helper;
265 env->argv[1] = &env->buf[env->buflen];
266 env->argv[2] = NULL;
268 env->buflen += len + 1;
279 static struct sk_buff *alloc_uevent_skb(struct kobj_uevent_env *env,
290 skb = alloc_skb(len + env->buflen, GFP_KERNEL);
298 skb_put_data(skb, env->buf, env->buflen);
309 static int uevent_net_broadcast_untagged(struct kobj_uevent_env *env,
326 skb = alloc_uevent_skb(env, action_string, devpath);
343 struct kobj_uevent_env *env,
351 skb = alloc_uevent_skb(env, action_string, devpath);
382 struct kobj_uevent_env *env,
409 ret = uevent_net_broadcast_untagged(env, action_string,
412 ret = uevent_net_broadcast_tagged(net->uevent_sock->sk, env,
419 static void zap_modalias_env(struct kobj_uevent_env *env)
425 for (i = 0; i < env->envp_idx;) {
426 if (strncmp(env->envp[i], modalias_prefix,
432 len = strlen(env->envp[i]) + 1;
434 if (i != env->envp_idx - 1) {
435 /* @env->envp[] contains pointers to @env->buf[]
436 * with @env->buflen chars, and we are removing
437 * variable MODALIAS here pointed by @env->envp[i]
440 * 0 @env->buf[] @env->buflen
444 * @env->envp[0] @env->envp[i] @env->envp[i + 1]
448 * @env->buflen - (@env->envp[i + 1] - @env->envp[0]).
450 memmove(env->envp[i], env->envp[i + 1],
451 env->buflen - (env->envp[i + 1] - env->envp[0]));
453 for (j = i; j < env->envp_idx - 1; j++)
454 env->envp[j] = env->envp[j + 1] - len;
457 env->envp_idx--;
458 env->buflen -= len;
475 struct kobj_uevent_env *env;
539 env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
540 if (!env)
551 retval = add_uevent_var(env, "ACTION=%s", action_string);
554 retval = add_uevent_var(env, "DEVPATH=%s", devpath);
557 retval = add_uevent_var(env, "SUBSYSTEM=%s", subsystem);
564 retval = add_uevent_var(env, "%s", envp_ext[i]);
572 retval = uevent_ops->uevent(kset, kobj, env);
594 zap_modalias_env(env);
603 retval = add_uevent_var(env, "SEQNUM=%llu", ++uevent_seqnum);
608 retval = kobject_uevent_net_broadcast(kobj, env, action_string,
617 retval = add_uevent_var(env, "HOME=/");
620 retval = add_uevent_var(env,
624 retval = init_uevent_argv(env, subsystem);
629 info = call_usermodehelper_setup(env->argv[0], env->argv,
630 env->envp, GFP_KERNEL,
631 NULL, cleanup_uevent_env, env);
634 env = NULL; /* freed by cleanup_uevent_env */
641 kfree(env);
663 * @env: environment buffer structure
669 int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...)
674 if (env->envp_idx >= ARRAY_SIZE(env->envp)) {
680 len = vsnprintf(&env->buf[env->buflen],
681 sizeof(env->buf) - env->buflen,
685 if (len >= (sizeof(env->buf) - env->buflen)) {
690 env->envp[env->envp_idx++] = &env->buf[env->buflen];
691 env->buflen += len + 1;