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-next>] [day] [month] [year] [list]
Date:	Sun, 16 Mar 2008 16:24:02 +0800
From:	"Peter Teoh" <htmldeveloper@...il.com>
To:	LKML <linux-kernel@...r.kernel.org>
Cc:	htmldeveloper@...il.com
Subject: spin_lock after get_cpu_var()

I find it quite puzzling (no where else in kernel source is this
found) that you would want to apply spin_lock() after get_cpu_var().
The fddef is already percpu, so there is no need to lock it, right?

I submitted this patch before, but got no response, just trying my
luck this time :-).

void free_fdtable_rcu(struct rcu_head *rcu)
{
        struct fdtable *fdt = container_of(rcu, struct fdtable, rcu);
        struct fdtable_defer *fddef;

        BUG_ON(!fdt);

        if (fdt->max_fds <= NR_OPEN_DEFAULT) {
                /*
                 * This fdtable is embedded in the files structure and that
                 * structure itself is getting destroyed.
                 */
                kmem_cache_free(files_cachep,
                                container_of(fdt, struct files_struct, fdtab));
                return;
        }
        if (fdt->max_fds <= (PAGE_SIZE / sizeof(struct file *))) {
                kfree(fdt->fd);
                kfree(fdt->open_fds);
                kfree(fdt);
        } else {
                fddef = &get_cpu_var(fdtable_defer_list);=============> here
                spin_lock(&fddef->lock);==========================>here
                fdt->next = fddef->next;
                fddef->next = fdt;
                /* vmallocs are handled from the workqueue context */
                schedule_work(&fddef->wq);
                spin_unlock(&fddef->lock);
                put_cpu_var(fdtable_defer_list);
        }
}
--
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