On Fri, 28 Mar 2008, Pekka Enberg wrote:Dammit, NO. The bug was that the commit I made (which was correct and robust) was then partially reverted by Christoph for no good reason. At that point, kmalloc_large() didn't even exist, so at that point the change was "technically correct" (since the only user of gfpflags really did end up clearing it somewhere deep in its callchain). So when that original 3811dbf67162bd08412f1b0e02e554f353e93bdb happened, it wasn't an outright bug - but that doesn't make it right. That commit was always just a bug waiting to happen, because it just set things up for later problems by retaining that bit when it really shouldn't have been retained, and forcing all future callers to be careful. Which they obviously were not! Yes, you can clear GFP_ZERO in multiple illogical places, and it will fix the bug. Or you can clear it in *one* place, that is in on the direct callchain from the person who actually does the memset(0), and even add a comment that says exactly what is going on. So the fact is, commit 3811dbf67162bd08412f1b0e02e554f353e93bdb is and was total and utter crap. I've reverted it in my tree. It's crap not because it was buggy when it was put in, but because it was *fragile* when it was put in. And that fragility ended up causing a bug later. I'm getting really tired of slub. It was supposed to be simpler code than slab, and yes, it's simpler, but it has been buggy as hell, and part of it has been that people just haven't been careful enough, and haven't written code to be defensive and easy-to-follow. So the *last* thing we want to do is to clear GFP_ZERO in multiple subtle places based on new random code being added. We want to clear it at the top level, so that no other code never ever even has to _think_ about it! Linus --
| David Miller | Slow DOWN, please!!! |
| KAMEZAWA Hiroyuki | Re: 2.6.22-rc1-mm1 |
| Steven Rostedt | [RFC PATCH 1/3] Unified trace buffer |
| Steven Rostedt | [RFC PATCH 0/6] Convert all tasklets to workqueues |
git: | |
| Peter Klavins | Re: CRLF problems with Git on Win32 |
| J. Bruce Fields | Re: Git User's Survey 2007 unfinished summary continued |
| Linus Torvalds | Re: VCS comparison table |
| Junichi Uekawa | Re: [ANNOUNCE] GIT 1.5.4 |
| Arjan van de Ven | Re: [GIT]: Networking |
| Rémi | [PATCH 0/6] [RFC] Phonet pipes protocol (v2) |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Jozsef Kadlecsik | Re: TCP connection stalls under 2.6.24.7 |
| Richard Stallman | Real men don't attack straw men |
| Rogier Krieger | Re: bcw(4) is gone |
| Leon Dippenaar | New tcp stack attack |
| Brandon Lee | DELL PERC 5iR slow performance |
| high memory | 5 hours ago | Linux kernel |
| semaphore access speed | 8 hours ago | Applications and Utilities |
| the kernel how to power off the machine | 9 hours ago | Linux kernel |
| Easter Eggs in windows XP | 12 hours ago | Windows |
| Shared swap partition | 13 hours ago | Linux general |
| Root password | 13 hours ago | Linux general |
| Where/when DNOTIFY is used? | 15 hours ago | Linux kernel |
| How to convert Linux Kernel built-in module into a loadable module | 17 hours ago | Linux kernel |
| Linux 2.6.24 and I/O schedulers | 18 hours ago | Linux kernel |
| USB Driver -- Interrupt Polling -- A Little Help Please | 23 hours ago | Linux general |
