On Tue, 2006-12-19 at 09:43 -0800, Linus Torvalds wrote: > > Btw, > here's a totally new tangent on this: it's possible that user code is > simply BUGGY.
depmod: BADNESS: written outside isize 22183 --- diff --git a/fs/buffer.c b/fs/buffer.c index d1f1b54..5db9fd9 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2393,6 +2393,17 @@ int nobh_commit_write(struct file *file, struct page *page, } EXPORT_SYMBOL(nobh_commit_write); +static void __check_tail_zero(char *kaddr, unsigned int offset) +{ + unsigned int check = 0; + do { + check += kaddr[offset++]; + } while (offset < PAGE_CACHE_SIZE); + if (check) + printk(KERN_ERR "%s: BADNESS: written outside isize %u\n", + current->comm, check); +} + /* * nobh_writepage() - based on block_full_write_page() except * that it tries to operate without attaching bufferheads to @@ -2437,6 +2448,7 @@ int nobh_writepage(struct page *page, get_block_t *get_block, * writes to that region are not written out to the file." */ kaddr = kmap_atomic(page, KM_USER0); + __check_tail_zero(kaddr, offset); memset(kaddr + offset, 0, PAGE_CACHE_SIZE - offset); flush_dcache_page(page); kunmap_atomic(kaddr, KM_USER0); @@ -2604,6 +2616,7 @@ int block_write_full_page(struct page *page, get_block_t *get_block, * writes to that region are not written out to the file." */ kaddr = kmap_atomic(page, KM_USER0); + __check_tail_zero(kaddr, offset); memset(kaddr + offset, 0, PAGE_CACHE_SIZE - offset); flush_dcache_page(page); kunmap_atomic(kaddr, KM_USER0); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/