Here's the patch again, with suggested changes. > + if (!p) return; > > Please split this into two lines. Can p ever be null_ p could never be null, as it turns out. So I removed this line. :-) > + q = p->inverse_trans_unicode = (u16 *) > + kmalloc(MAX_GLYPH * sizeof(u16), GFP_KERNEL); > > The cast is not needed. And btw, where is q freed? It is freed. Grep for kfree.*inverse_trans_unicode. Chris