* [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used. @ 2011-11-23 23:46 David Daney 2011-11-23 23:46 ` [PATCH v3 1/2] kernel.h: Add BUILD_BUG() macro David Daney ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: David Daney @ 2011-11-23 23:46 UTC (permalink / raw) To: Andrew Morton Cc: ralf, linux-kernel, linux-arch, Linus Torvalds, David Rientjes, DM, David Howells, David Daney From: David Daney <david.daney@cavium.com> For v3: No code changes. Fix comment text in kernel.h to correctly reflect the name BUILD_BUG(). Updated patch chanegelogs with slightly better descriptions and some Acked-by: headers. Andrew, since you have version 2 in you tree currently, can you replace those patches with this version instead? Thanks, David Daney >From v2: As suggested by 'DM', call the macro BUILD_BUG() instead of BUILD_BUG_ON_USED(). Linus seemed satisfied with this, so if it still looks good, can we put it in some linux-next tree (Perhaps Andrew Morton's) to cook for a while? The second patch now covers linux/huge_mm.h too. >From v1: After some, perhaps justified, reluctance to merge dummy symbol definitions containing BUG() into header files, I propose these patches instead. We define a new compile time assertion BUILD_BUG_ON_USED() that can be used in places were we expect the compiler's dead code elimination to get rid of code. This happens mostly in code dealing with huge pages, but in other places as well. The first patch adds BUILD_BUG_ON_USED(), the second gets rid of one of the main abusers of BUG(). David Daney (2): kernel.h: Add BUILD_BUG() macro. hugetlb: Replace BUG() with BUILD_BUG() for dummy definitions. include/linux/compiler-gcc4.h | 1 + include/linux/compiler.h | 4 +++- include/linux/huge_mm.h | 8 ++++---- include/linux/hugetlb.h | 14 +++++++------- include/linux/kernel.h | 16 ++++++++++++++++ 5 files changed, 31 insertions(+), 12 deletions(-) -- 1.7.2.3 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 1/2] kernel.h: Add BUILD_BUG() macro. 2011-11-23 23:46 [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used David Daney @ 2011-11-23 23:46 ` David Daney 2012-01-17 5:52 ` [PATCH] mips: remove custom BUILD_BUG() Eric Dumazet 2011-11-23 23:46 ` [PATCH v3 2/2] hugetlb: Replace BUG() with BUILD_BUG() for dummy definitions David Daney 2011-11-23 23:57 ` [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used Linus Torvalds 2 siblings, 1 reply; 11+ messages in thread From: David Daney @ 2011-11-23 23:46 UTC (permalink / raw) To: Andrew Morton Cc: ralf, linux-kernel, linux-arch, Linus Torvalds, David Rientjes, DM, David Howells, David Daney From: David Daney <david.daney@cavium.com> We can place this in definitions that we expect the compiler to remove by dead code elimination. If this assertion fails, we get a nice error message at build time. The GCC function attribute error("message") was added in version 4.3, so we define a new macro __linktime_error(message) to expand to this for GCC-4.3 and later. This will give us an error diagnostic from the compiler on the line that fails. For other compilers __linktime_error(message) expands to nothing, and we have to be content with a link time error, but at least we will still get a build error. BUILD_BUG() expands to the undefined function __build_bug_failed() and will fail at link time if the compiler ever emits code for it. On GCC-4.3 and later, attribute((error())) is used so that the failure will be noted at compile time instead. Acked-by: David Howells <dhowells@redhat.com> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: David Daney <david.daney@cavium.com> --- include/linux/compiler-gcc4.h | 1 + include/linux/compiler.h | 4 +++- include/linux/kernel.h | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletions(-) diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h index dfadc96..2f40791 100644 --- a/include/linux/compiler-gcc4.h +++ b/include/linux/compiler-gcc4.h @@ -29,6 +29,7 @@ the kernel context */ #define __cold __attribute__((__cold__)) +#define __linktime_error(message) __attribute__((__error__(message))) #if __GNUC_MINOR__ >= 5 /* diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 320d6c9..4a24354 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -293,7 +293,9 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); #ifndef __compiletime_error # define __compiletime_error(message) #endif - +#ifndef __linktime_error +# define __linktime_error(message) +#endif /* * Prevent the compiler from merging or refetching accesses. The compiler * is also forbidden from reordering successive instances of ACCESS_ONCE(), diff --git a/include/linux/kernel.h b/include/linux/kernel.h index b93c66e..723ef1b 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -666,6 +666,7 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { } #define BUILD_BUG_ON_ZERO(e) (0) #define BUILD_BUG_ON_NULL(e) ((void*)0) #define BUILD_BUG_ON(condition) +#define BUILD_BUG() (0) #else /* __CHECKER__ */ /* Force a compilation error if a constant expression is not a power of 2 */ @@ -704,6 +705,21 @@ extern int __build_bug_on_failed; if (condition) __build_bug_on_failed = 1; \ } while(0) #endif + +/** + * BUILD_BUG - break compile if used. + * + * If you have some code that you expect the compiler to eliminate at + * build time, you should use BUILD_BUG to detect if it is + * unexpectedly used. + */ +#define BUILD_BUG() \ + do { \ + extern void __build_bug_failed(void) \ + __linktime_error("BUILD_BUG failed"); \ + __build_bug_failed(); \ + } while (0) + #endif /* __CHECKER__ */ /* Trap pasters of __FUNCTION__ at compile-time */ -- 1.7.2.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH] mips: remove custom BUILD_BUG() 2011-11-23 23:46 ` [PATCH v3 1/2] kernel.h: Add BUILD_BUG() macro David Daney @ 2012-01-17 5:52 ` Eric Dumazet 2012-01-17 8:28 ` Ralf Baechle 0 siblings, 1 reply; 11+ messages in thread From: Eric Dumazet @ 2012-01-17 5:52 UTC (permalink / raw) To: David Daney Cc: Andrew Morton, ralf, linux-kernel, linux-arch, Linus Torvalds, David Rientjes, DM, David Howells, David Daney Commit 1399ff86f2a2b (kernel.h: add BUILD_BUG() macro) broke mips build In file included from /opt/src/linux/arch/mips/include/asm/io.h:16:0, from /opt/src/linux/arch/mips/include/asm/page.h:54, from include/linux/serial.h:16, from include/linux/serial_core.h:23, from include/linux/serial_8250.h:14, from arch/mips/mti-malta/malta-platform.c:25: include/linux/kernel.h:717:0: error: "BUILD_BUG" redefined [-Werror] /opt/src/linux/arch/mips/include/asm/page.h:43:0: note: this is the location of the previous definition cc1: all warnings being treated as errors Remove the conflicting mips macro. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> CC: Ralf Baechle <ralf@linux-mips.org> --- arch/mips/include/asm/page.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h index d417909..da9bd7d 100644 --- a/arch/mips/include/asm/page.h +++ b/arch/mips/include/asm/page.h @@ -39,9 +39,6 @@ #define HPAGE_MASK (~(HPAGE_SIZE - 1)) #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) #else /* !CONFIG_HUGETLB_PAGE */ -# ifndef BUILD_BUG -# define BUILD_BUG() do { extern void __build_bug(void); __build_bug(); } while (0) -# endif #define HPAGE_SHIFT ({BUILD_BUG(); 0; }) #define HPAGE_SIZE ({BUILD_BUG(); 0; }) #define HPAGE_MASK ({BUILD_BUG(); 0; }) ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] mips: remove custom BUILD_BUG() 2012-01-17 5:52 ` [PATCH] mips: remove custom BUILD_BUG() Eric Dumazet @ 2012-01-17 8:28 ` Ralf Baechle 2012-01-17 8:34 ` Eric Dumazet 0 siblings, 1 reply; 11+ messages in thread From: Ralf Baechle @ 2012-01-17 8:28 UTC (permalink / raw) To: Eric Dumazet Cc: David Daney, Andrew Morton, linux-kernel, linux-arch, Linus Torvalds, David Rientjes, DM, David Howells, David Daney On Tue, Jan 17, 2012 at 06:52:52AM +0100, Eric Dumazet wrote: > Date: Tue, 17 Jan 2012 06:52:52 +0100 > From: Eric Dumazet <eric.dumazet@gmail.com> > To: David Daney <ddaney.cavm@gmail.com> > Cc: Andrew Morton <akpm@linux-foundation.org>, ralf@linux-mips.org, > linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Linus Torvalds > <torvalds@linux-foundation.org>, David Rientjes <rientjes@google.com>, DM > <dm.n9107@gmail.com>, David Howells <dhowells@redhat.com>, David Daney > <david.daney@cavium.com> > Subject: [PATCH] mips: remove custom BUILD_BUG() > Content-Type: text/plain; charset="UTF-8" > > Commit 1399ff86f2a2b (kernel.h: add BUILD_BUG() macro) broke mips build > > In file included from /opt/src/linux/arch/mips/include/asm/io.h:16:0, > from /opt/src/linux/arch/mips/include/asm/page.h:54, > from include/linux/serial.h:16, > from include/linux/serial_core.h:23, > from include/linux/serial_8250.h:14, > from arch/mips/mti-malta/malta-platform.c:25: > include/linux/kernel.h:717:0: error: "BUILD_BUG" redefined [-Werror] > /opt/src/linux/arch/mips/include/asm/page.h:43:0: note: this is the > location of the previous definition > cc1: all warnings being treated as errors > > Remove the conflicting mips macro. See 63e9c4fd1c86e894e62aa3737427163d5fb01056 [MIPS: Remove temporary kludge from <asm/page.h>] in linux-next. Ralf ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] mips: remove custom BUILD_BUG() 2012-01-17 8:28 ` Ralf Baechle @ 2012-01-17 8:34 ` Eric Dumazet 0 siblings, 0 replies; 11+ messages in thread From: Eric Dumazet @ 2012-01-17 8:34 UTC (permalink / raw) To: Ralf Baechle Cc: David Daney, Andrew Morton, linux-kernel, linux-arch, Linus Torvalds, David Rientjes, DM, David Howells, David Daney Le mardi 17 janvier 2012 à 09:28 +0100, Ralf Baechle a écrit : > See 63e9c4fd1c86e894e62aa3737427163d5fb01056 [MIPS: Remove temporary kludge > from <asm/page.h>] in linux-next. > Good, thanks ! ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 2/2] hugetlb: Replace BUG() with BUILD_BUG() for dummy definitions. 2011-11-23 23:46 [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used David Daney 2011-11-23 23:46 ` [PATCH v3 1/2] kernel.h: Add BUILD_BUG() macro David Daney @ 2011-11-23 23:46 ` David Daney 2011-11-23 23:57 ` [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used Linus Torvalds 2 siblings, 0 replies; 11+ messages in thread From: David Daney @ 2011-11-23 23:46 UTC (permalink / raw) To: Andrew Morton Cc: ralf, linux-kernel, linux-arch, Linus Torvalds, David Rientjes, DM, David Howells, David Daney From: David Daney <david.daney@cavium.com> The files linux/hugetlb.h and linux/huge_mm.h have several places where dummy symbols were defined so that the main source code would contain fewer: #ifdef CONFIG_HUGETLBFS or #ifdef CONFIG_TRANSPARENT_HUGEPAGE If there were any misuse of these symbols, the only symptom would be an OOPS at runtime. Change the BUG() to BUILD_BUG() to catch any such abuse at compile time instead. Acked-by: David Howells <dhowells@redhat.com> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: David Daney <david.daney@cavium.com> --- include/linux/huge_mm.h | 8 ++++---- include/linux/hugetlb.h | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index a9ace9c..33e47d8 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -145,10 +145,10 @@ static inline struct page *compound_trans_head(struct page *page) } return page; } -#else /* CONFIG_TRANSPARENT_HUGEPAGE */ -#define HPAGE_PMD_SHIFT ({ BUG(); 0; }) -#define HPAGE_PMD_MASK ({ BUG(); 0; }) -#define HPAGE_PMD_SIZE ({ BUG(); 0; }) +#else /* !CONFIG_TRANSPARENT_HUGEPAGE */ +#define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; }) +#define HPAGE_PMD_MASK ({ BUILD_BUG(); 0; }) +#define HPAGE_PMD_SIZE ({ BUILD_BUG(); 0; }) #define hpage_nr_pages(x) 1 diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index d9d6c86..1289937 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -85,11 +85,11 @@ static inline unsigned long hugetlb_total_pages(void) return 0; } -#define follow_hugetlb_page(m,v,p,vs,a,b,i,w) ({ BUG(); 0; }) +#define follow_hugetlb_page(m,v,p,vs,a,b,i,w) ({ BUILD_BUG(); 0; }) #define follow_huge_addr(mm, addr, write) ERR_PTR(-EINVAL) -#define copy_hugetlb_page_range(src, dst, vma) ({ BUG(); 0; }) -#define hugetlb_prefault(mapping, vma) ({ BUG(); 0; }) -#define unmap_hugepage_range(vma, start, end, page) BUG() +#define copy_hugetlb_page_range(src, dst, vma) ({ BUILD_BUG(); 0; }) +#define hugetlb_prefault(mapping, vma) ({ BUILD_BUG(); 0; }) +#define unmap_hugepage_range(vma, start, end, page) BUILD_BUG() static inline void hugetlb_report_meminfo(struct seq_file *m) { } @@ -100,8 +100,8 @@ static inline void hugetlb_report_meminfo(struct seq_file *m) #define pmd_huge(x) 0 #define pud_huge(x) 0 #define is_hugepage_only_range(mm, addr, len) 0 -#define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; }) -#define hugetlb_fault(mm, vma, addr, flags) ({ BUG(); 0; }) +#define hugetlb_free_pgd_range(tlb, addr, end, f, c) ({BUILD_BUG(); 0; }) +#define hugetlb_fault(mm, vma, addr, flags) ({ BUILD_BUG(); 0; }) #define huge_pte_offset(mm, address) 0 #define dequeue_hwpoisoned_huge_page(page) 0 static inline void copy_huge_page(struct page *dst, struct page *src) @@ -186,7 +186,7 @@ static inline void set_file_hugepages(struct file *file) #else /* !CONFIG_HUGETLBFS */ #define is_file_hugepages(file) 0 -#define set_file_hugepages(file) BUG() +#define set_file_hugepages(file) BUILD_BUG() static inline struct file *hugetlb_file_setup(const char *name, size_t size, vm_flags_t acctflag, struct user_struct **user, int creat_flags) { -- 1.7.2.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used. 2011-11-23 23:46 [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used David Daney 2011-11-23 23:46 ` [PATCH v3 1/2] kernel.h: Add BUILD_BUG() macro David Daney 2011-11-23 23:46 ` [PATCH v3 2/2] hugetlb: Replace BUG() with BUILD_BUG() for dummy definitions David Daney @ 2011-11-23 23:57 ` Linus Torvalds 2011-11-24 0:37 ` David Daney 2011-11-24 10:24 ` David Howells 2 siblings, 2 replies; 11+ messages in thread From: Linus Torvalds @ 2011-11-23 23:57 UTC (permalink / raw) To: David Daney Cc: Andrew Morton, ralf, linux-kernel, linux-arch, David Rientjes, DM, David Howells, David Daney Btw, would it possibly make sense to make the string more useful? For example using __FILE__ and __LINE__, or possibly letting the user of the BUILD_BUG() give a string ("Using HMASK without CONFIG_HUGEPAGE"). Whatever. It's bikeshedding - what would probably be more important would be to get this into linux-next so that we find out whether there are any compile issues with it on other platforms or compiler versions. Linus ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used. 2011-11-23 23:57 ` [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used Linus Torvalds @ 2011-11-24 0:37 ` David Daney 2011-11-24 10:24 ` David Howells 1 sibling, 0 replies; 11+ messages in thread From: David Daney @ 2011-11-24 0:37 UTC (permalink / raw) To: Linus Torvalds Cc: David Daney, Andrew Morton, ralf, linux-kernel, linux-arch, David Rientjes, DM, David Howells, David Daney, Pinski, Andrew On 11/23/2011 03:57 PM, Linus Torvalds wrote: > Btw, would it possibly make sense to make the string more useful? > > For example using __FILE__ and __LINE__, or possibly letting the user > of the BUILD_BUG() give a string ("Using HMASK without > CONFIG_HUGEPAGE"). We thought about doing that, but without doing some complex preprocessor fu, the GCC attribute ((error())) thing doesn't do what we want. It appears that if more than a single instance of the construct is used in a compilation unit, the string emitted by the compiler for any of the violations will be the last string encountered. So if you did something like: . . . Line 99: BUILD_BUG("You failed on line 99"); . . . . Line 666: BUILD_BUG("You failed on line 666"); . . . The message emitted for a failure at line 99 would be "You failed on line 666". Which is probably worse than no message at all. It may be possible to do something like: #define _LINENAME_CONCAT( _name_, _line_ ) _name_##_line_ #define _LINENAME(_name_, _line_) _LINENAME_CONCAT(_name_,_line_) #define _BUILD_BUG(MSG,FUBAR) \ do { \ extern void FUBAR (void) \ __linktime_error("BUILD_BUG failed: " MSG); \ FUBAR (); \ } while (0) #define BUILD_BUG(M,A) _BUILD_BUG(M, _LINENAME(__build_bug_failed,__LINE__)) But it didn't seem worth it. > > Whatever. It's bikeshedding - what would probably be more important > would be to get this into linux-next so that we find out whether there > are any compile issues with it on other platforms or compiler > versions. > > Linus > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used. 2011-11-23 23:57 ` [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used Linus Torvalds 2011-11-24 0:37 ` David Daney @ 2011-11-24 10:24 ` David Howells 2011-11-24 18:31 ` Linus Torvalds 1 sibling, 1 reply; 11+ messages in thread From: David Howells @ 2011-11-24 10:24 UTC (permalink / raw) To: David Daney Cc: dhowells, Linus Torvalds, Andrew Morton, ralf, linux-kernel, linux-arch, David Rientjes, DM, David Daney, Pinski, Andrew David Daney <ddaney.cavm@gmail.com> wrote: > We thought about doing that, but without doing some complex preprocessor fu, > the GCC attribute ((error())) thing doesn't do what we want. > > It appears that if more than a single instance of the construct is used in a > compilation unit, the string emitted by the compiler for any of the violations > will be the last string encountered. Have you tried asking the gcc folks if this is likely to get fixed soon? David ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used. 2011-11-24 10:24 ` David Howells @ 2011-11-24 18:31 ` Linus Torvalds 2011-11-28 17:03 ` David Daney 0 siblings, 1 reply; 11+ messages in thread From: Linus Torvalds @ 2011-11-24 18:31 UTC (permalink / raw) To: David Howells Cc: David Daney, Andrew Morton, ralf, linux-kernel, linux-arch, David Rientjes, DM, David Daney, Pinski, Andrew On Thu, Nov 24, 2011 at 2:24 AM, David Howells <dhowells@redhat.com> wrote: > > Have you tried asking the gcc folks if this is likely to get fixed soon? I actually don't think it's a bug. The error message is associated with the function declaration symbol, so it actually makes sense that there can be only one error message per callee - not per caller. Using "__LINE__" to then create fairly unique symbols (modulo #include, of course) gets around it in a pretty natural way as ddaney said, so if we care enough. I don't think it's a big issue (as mentioned, I'd worry more about us making sure it's reliable enough to be used - we've had gcc sometimes fail to compile things out just because some optimization was not working well enough). Linus ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used. 2011-11-24 18:31 ` Linus Torvalds @ 2011-11-28 17:03 ` David Daney 0 siblings, 0 replies; 11+ messages in thread From: David Daney @ 2011-11-28 17:03 UTC (permalink / raw) To: Linus Torvalds Cc: David Howells, David Daney, Andrew Morton, ralf, linux-kernel, linux-arch, David Rientjes, DM, David Daney, Pinski, Andrew On 11/24/2011 10:31 AM, Linus Torvalds wrote: > On Thu, Nov 24, 2011 at 2:24 AM, David Howells<dhowells@redhat.com> wrote: >> >> Have you tried asking the gcc folks if this is likely to get fixed soon? > > I actually don't think it's a bug. The error message is associated > with the function declaration symbol, so it actually makes sense that > there can be only one error message per callee - not per caller. > Yes, that is correct. > Using "__LINE__" to then create fairly unique symbols (modulo > #include, of course) gets around it in a pretty natural way as ddaney > said, so if we care enough. I don't think it's a big issue (as > mentioned, I'd worry more about us making sure it's reliable enough to > be used - we've had gcc sometimes fail to compile things out just > because some optimization was not working well enough). > Since these are *build* bugs, they are of a different nature than the *runtime* variety. They will never be seen at random times by someone running the kernel, so making it easier to determine their cause is less important. Really, I would expect it to never really be an issue. We will always know which file is the culprit. Finding the line number can be done like this: objdump -r $file | grep build_bug | addr2line -e $file David Daney ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2012-01-17 8:34 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-11-23 23:46 [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used David Daney 2011-11-23 23:46 ` [PATCH v3 1/2] kernel.h: Add BUILD_BUG() macro David Daney 2012-01-17 5:52 ` [PATCH] mips: remove custom BUILD_BUG() Eric Dumazet 2012-01-17 8:28 ` Ralf Baechle 2012-01-17 8:34 ` Eric Dumazet 2011-11-23 23:46 ` [PATCH v3 2/2] hugetlb: Replace BUG() with BUILD_BUG() for dummy definitions David Daney 2011-11-23 23:57 ` [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used Linus Torvalds 2011-11-24 0:37 ` David Daney 2011-11-24 10:24 ` David Howells 2011-11-24 18:31 ` Linus Torvalds 2011-11-28 17:03 ` David Daney
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).