All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Luis Henriques <luis.henriques@canonical.com>,
	Minchan Kim <minchan@kernel.org>,
	linux-kernel@vger.kernel.org,
	Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Subject: Re: [PATCH v3] zram: fix possible use after free in zcomp_create()
Date: Tue, 8 Sep 2015 19:27:11 +0900	[thread overview]
Message-ID: <20150908102711.GB29901@swordfish> (raw)
In-Reply-To: <20150908095652.GA29901@swordfish>

On (09/08/15 18:56), Sergey Senozhatsky wrote:
> On (09/08/15 10:39), Luis Henriques wrote:
> > zcomp_create() verifies the success of zcomp_strm_{multi,siggle}_create()
> > through comp->stream, which can potentially be pointing to memory that was
> > freed if these functions returned an error.
> > 
> > While at it, replace a 'ERR_PTR(-ENOMEM)' by a more generic
> > 'ERR_PTR(error)' as in the future zcomp_strm_{multi,siggle}_create() could
> > return other error codes.  Function documentation updated accordingly.
> > 

Oh...forgot to Cc Andrew
Andrew, please disregard V2 of this patch.

V3
Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>

	-ss

> > ---
> > 
> > Changes since v2:
> >  * Renamed local variable 'ret' to 'error'
> >  * Usage of 'ERR_PTR(error)' to accommodate future error codes returned by
> >    zcomp_strm_{multi,siggle}_create
> >  (all suggested by Minchan)
> > 
> > Changes since v1:
> >  * Check zcomp_strm_{multi,siggle}_create() return code instead
> >    comp->stream (suggested by Sergey)
> > 
> > drivers/block/zram/zcomp.c | 12 +++++++-----
> >  1 file changed, 7 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/block/zram/zcomp.c b/drivers/block/zram/zcomp.c
> > index 965d1afb0eaa..5cb13ca3a3ac 100644
> > --- a/drivers/block/zram/zcomp.c
> > +++ b/drivers/block/zram/zcomp.c
> > @@ -330,12 +330,14 @@ void zcomp_destroy(struct zcomp *comp)
> >   * allocate new zcomp and initialize it. return compressing
> >   * backend pointer or ERR_PTR if things went bad. ERR_PTR(-EINVAL)
> >   * if requested algorithm is not supported, ERR_PTR(-ENOMEM) in
> > - * case of allocation error.
> > + * case of allocation error, or any other error potentially
> > + * returned by functions zcomp_strm_{multi,single}_create.
> >   */
> >  struct zcomp *zcomp_create(const char *compress, int max_strm)
> >  {
> >  	struct zcomp *comp;
> >  	struct zcomp_backend *backend;
> > +	int error;
> >  
> >  	backend = find_backend(compress);
> >  	if (!backend)
> > @@ -347,12 +349,12 @@ struct zcomp *zcomp_create(const char *compress, int max_strm)
> >  
> >  	comp->backend = backend;
> >  	if (max_strm > 1)
> > -		zcomp_strm_multi_create(comp, max_strm);
> > +		error = zcomp_strm_multi_create(comp, max_strm);
> >  	else
> > -		zcomp_strm_single_create(comp);
> > -	if (!comp->stream) {
> > +		error = zcomp_strm_single_create(comp);
> > +	if (error) {
> >  		kfree(comp);
> > -		return ERR_PTR(-ENOMEM);
> > +		return ERR_PTR(error);
> >  	}
> >  	return comp;
> >  }
> > 
> 

  reply	other threads:[~2015-09-08 10:26 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-07 10:33 [PATCH] zram: fix possible use after free in zcomp_create() Luis Henriques
2015-09-07 11:11 ` Sergey Senozhatsky
2015-09-07 12:53   ` Luis Henriques
2015-09-07 13:33     ` Sergey Senozhatsky
2015-09-07 14:11       ` Luis Henriques
2015-09-07 14:13       ` [PATCH v2] " Luis Henriques
2015-09-07 23:59         ` Sergey Senozhatsky
2015-09-08  1:07         ` Minchan Kim
2015-09-08  1:20           ` Sergey Senozhatsky
2015-09-08  1:34             ` Minchan Kim
2015-09-08  9:39               ` [PATCH v3] " Luis Henriques
2015-09-08  9:56                 ` Sergey Senozhatsky
2015-09-08 10:27                   ` Sergey Senozhatsky [this message]
2015-09-08 13:35                 ` Minchan Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150908102711.GB29901@swordfish \
    --to=sergey.senozhatsky.work@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luis.henriques@canonical.com \
    --cc=minchan@kernel.org \
    --cc=sergey.senozhatsky@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.