lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 4 Mar 2008 22:03:39 +0530
From:	Dhaval Giani <dhaval@...ux.vnet.ibm.com>
To:	Alexey Dobriyan <adobriyan@...ru>
Cc:	Holger Kiehl <Holger.Kiehl@....de>, linux-kernel@...r.kernel.org,
	vatsa@...ux.vnet.ibm.com, mingo@...e.hu, gregkh@...e.de
Subject: Re: sysfs: duplicate filename '74' can not be created

On Tue, Mar 04, 2008 at 07:09:40PM +0300, Alexey Dobriyan wrote:
> [Cc'ing /sys/kernel/uids guys]
> 

[Also adding gregkh to the cc :)]

> > Mar  3 13:50:01 helena kernel: sysfs: duplicate filename '74' can not be created
> > Mar  3 13:50:01 helena kernel: WARNING: at fs/sysfs/dir.c:424 sysfs_add_one()
> > Mar  3 13:50:01 helena kernel: Pid: 21911, comm: sshd Not tainted 2.6.24.3 #1
> 
> I see only one suspicious place: KOBJ_ADD is sent even if sysfs file
> creation failed and kobject is happily removed. But this almost
> certainly separate bug.
> 
> 
> 
> You can try this debugging patch. Post several first consecutive messages.
> [crosses fingers]
> 
> --- a/kernel/user.c
> +++ b/kernel/user.c
> @@ -179,8 +179,11 @@ static int user_kobject_create(struct user_struct *up)
>  		goto done;
> 
>  	error = sysfs_create_file(kobj, &up->user_attr.attr);
> -	if (error)
> +	if (error) {
> +		printk("%s: %p->uid = %d\n", __func__, up, up->uid);
> +		WARN_ON(1);
>  		kobject_del(kobj);
> +	}
> 
>  	kobject_uevent(kobj, KOBJ_ADD);
> 
> @@ -363,6 +366,7 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid)
>  		}
> 
>  		if (sched_create_user(new) < 0) {
> +			WARN_ON(1);
>  			key_put(new->uid_keyring);
>  			key_put(new->session_keyring);
>  			kmem_cache_free(uid_cachep, new);
> @@ -371,6 +375,7 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid)
>  		}
> 
>  		if (user_kobject_create(new)) {
> +			WARN_ON(1);
>  			sched_destroy_user(new);
>  			key_put(new->uid_keyring);
>  			key_put(new->session_keyring);
> @@ -386,6 +391,10 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid)
>  		spin_lock_irq(&uidhash_lock);
>  		up = uid_hash_find(uid, hashent);
>  		if (up) {
> +#ifdef CONFIG_FAIR_USER_SCHED
> +			printk("%s: %p->uid = %d\n", __func__, up, up->uid);
> +			WARN_ON(1);
> +#endif
>  			/* This case is not possible when CONFIG_FAIR_USER_SCHED
>  			 * is defined, since we serialize alloc_uid() using
>  			 * uids_mutex. Hence no need to call
> diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
> index 7af90fc..3479c55 100644
> --- a/kernel/user_namespace.c
> +++ b/kernel/user_namespace.c
> @@ -32,6 +32,8 @@ static struct user_namespace *clone_user_ns(struct user_namespace *old_ns)
>  	struct user_struct *new_user;
>  	int n;
> 
> +	printk("%s: ENTER\n", __func__);
> +
>  	ns = kmalloc(sizeof(struct user_namespace), GFP_KERNEL);
>  	if (!ns)
>  		return ERR_PTR(-ENOMEM);

-- 
regards,
Dhaval
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ