Prev: Introduce a config option that introduces a bias in favour of writers in rwlocks
Next: [PATCH]: bunzip2: Fix warning in get_next_block()
From: Al Viro on 22 May 2010 10:10 On Sat, May 22, 2010 at 10:04:07AM -0400, Prarit Bhargava wrote: > Fix checkstack compile warning in get_next_block(): > > lib/decompress_bunzip2.c: In function `get_next_block': > lib/decompress_bunzip2.c:511: warning: the frame size of 1920 bytes is larger than 1024 bytes > int dbufCount, nextSym, dbufSize, groupCount, selector, > - i, j, k, t, runPos, symCount, symTotal, nSelectors, > - byteCount[256]; > - unsigned char uc, symToByte[256], mtfSymbol[256], *selectors; > + i, j, k, t, runPos, symCount, symTotal, nSelectors; > + static int byteCount[256]; > + unsigned char uc, *selectors; > + static unsigned char symToByte[256], mtfSymbol[256]; > unsigned int *dbuf, origPtr; Um... Some details might be useful, starting with "why can't that function be called from several processes at once"... -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Prarit Bhargava on 22 May 2010 14:20
On 05/22/2010 10:07 AM, Al Viro wrote: > On Sat, May 22, 2010 at 10:04:07AM -0400, Prarit Bhargava wrote: > >> Fix checkstack compile warning in get_next_block(): >> >> lib/decompress_bunzip2.c: In function `get_next_block': >> lib/decompress_bunzip2.c:511: warning: the frame size of 1920 bytes is larger than 1024 bytes >> > > >> int dbufCount, nextSym, dbufSize, groupCount, selector, >> - i, j, k, t, runPos, symCount, symTotal, nSelectors, >> - byteCount[256]; >> - unsigned char uc, symToByte[256], mtfSymbol[256], *selectors; >> + i, j, k, t, runPos, symCount, symTotal, nSelectors; >> + static int byteCount[256]; >> + unsigned char uc, *selectors; >> + static unsigned char symToByte[256], mtfSymbol[256]; >> unsigned int *dbuf, origPtr; >> > Um... Some details might be useful, starting with "why can't that function > be called from several processes at once"... > Al, to be honest, I'm not 100% if this is single-threaded or not :/. I was hoping that by throwing the patch out I would get either an ACK or a NAK on it because of the single threaded issue. It seems to me (and I admit I might be totally wrong) that the bunzip2 function is only called during early boot, #ifdef PREBOOT STATIC int INIT decompress(unsigned char *buf, int len, int(*fill)(void*, unsigned int), int(*flush)(void*, unsigned int), unsigned char *outbuf, int *pos, void(*error_fn)(char *x)) { return bunzip2(buf, len - 4, fill, flush, outbuf, pos, error_fn); } #endif .... which (again, if the assumptions I'm making are correct) means that only one cpu will be active. /me hopes someone will correct him if he's wrong and that's why hpa and phillip are cc'd directly If it isn't single threaded, then you're right -- a PREBOOT malloc is the way to go. P. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |