Messages in this thread | | | Date | Wed, 25 Apr 2012 09:35:25 -0400 | From | Nitin Gupta <> | Subject | Re: [PATCH 5/6] zsmalloc: remove unnecessary type casting |
| |
On 04/25/2012 02:23 AM, Minchan Kim wrote:
> Let's remove unnecessary type casting of (void *). > > Signed-off-by: Minchan Kim <minchan@kernel.org> > --- > drivers/staging/zsmalloc/zsmalloc-main.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/staging/zsmalloc/zsmalloc-main.c b/drivers/staging/zsmalloc/zsmalloc-main.c > index b7d31cc..ff089f8 100644 > --- a/drivers/staging/zsmalloc/zsmalloc-main.c > +++ b/drivers/staging/zsmalloc/zsmalloc-main.c > @@ -644,8 +644,7 @@ void zs_free(struct zs_pool *pool, void *obj) > spin_lock(&class->lock); > > /* Insert this object in containing zspage's freelist */ > - link = (struct link_free *)((unsigned char *)kmap_atomic(f_page) > - + f_offset); > + link = (struct link_free *)(kmap_atomic(f_page) + f_offset); > link->next = first_page->freelist; > kunmap_atomic(link); > first_page->freelist = obj;
Incrementing a void pointer looks weired and should not be allowed by C compilers though gcc and clang seem to allow this without any warnings. (fortunately C++ forbids incrementing void pointers)
So, we should keep this cast to unsigned char pointer to avoid relying on a non-standard, compiler specific behavior.
Thanks, Nitin
| |