All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Pali Rohár" <pali.rohar@gmail.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Peter Teoh <htmldeveloper@gmail.com>,
	Tomi Valkeinen <tomi.valkeinen@ti.com>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Jyri Sarha <jsarha@ti.com>, omap <linux-omap@vger.kernel.org>,
	linux-fbdev@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
	Sebastian Reichel <sre@kernel.org>,
	Aaro Koskinen <aaro.koskinen@iki.fi>,
	Tony Lindgren <tony@atomide.com>, Nishanth Menon <nm@ti.com>
Subject: Re: omapdss: Division by zero in kernel
Date: Fri, 25 Sep 2015 11:34:29 +0000	[thread overview]
Message-ID: <20150925113429.GF27119@pali> (raw)
In-Reply-To: <20150917051644.GA6665@amd>

On Thursday 17 September 2015 07:16:44 Pavel Machek wrote:
> 
> > >         if (image->depth = 1) {
> > >                 if (p->fix.visual = FB_VISUAL_TRUECOLOR ||
> > >                     p->fix.visual = FB_VISUAL_DIRECTCOLOR) {
> > >                         fgcolor = ((u32*)(p->pseudo_palette))[image->fg_color];
> > >                         bgcolor = ((u32*)(p->pseudo_palette))[image->bg_color];
> > >                 } else {
> > >                         fgcolor = image->fg_color;
> > >                         bgcolor = image->bg_color;
> > >                 }
> > > 
> > >                 if (32 % bpp = 0 && !start_index && !pitch_index &&
> > >                     ((width & (32/bpp-1)) = 0) &&
> > >                     bpp >= 8 && bpp <= 32)
> > >                         fast_imageblit(image, p, dst1, fgcolor, bgcolor);
> > >                 else
> > >                         slow_imageblit(image, p, dst1, fgcolor, bgcolor,
> > >                                         start_index, pitch_index);
> > >         } else
> > >                 color_imageblit(image, p, dst1, start_index, pitch_i
> > > 
> > > 
> > > Notice that bpp is not checked for zero, and thus bpp=0 is totally
> > > feasible?   resulting in 32/bpp crashing the kernel?
> > > 
> > 
> > Hm... this could really be a problem! But how to patch it? Which branch
> > should be called (fast_ or slow_ function) if bpp is zero?
> > 
> > And is there some way to force kernel to dump backtrace into dmesg when
> > division by zero occur?
> 
> You can do WARN_ON(bpp=1) ... and should probably return in that
> case.
> 
> 								Pavel

Does not make sense to call slow_ function? In that if condition check
also that bpp is nonzero...

-- 
Pali Rohár
pali.rohar@gmail.com

WARNING: multiple messages have this Message-ID (diff)
From: "Pali Rohár" <pali.rohar@gmail.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Peter Teoh <htmldeveloper@gmail.com>,
	Tomi Valkeinen <tomi.valkeinen@ti.com>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Jyri Sarha <jsarha@ti.com>, omap <linux-omap@vger.kernel.org>,
	linux-fbdev@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
	Sebastian Reichel <sre@kernel.org>,
	Aaro Koskinen <aaro.koskinen@iki.fi>,
	Tony Lindgren <tony@atomide.com>, Nishanth Menon <nm@ti.com>
Subject: Re: omapdss: Division by zero in kernel
Date: Fri, 25 Sep 2015 13:34:29 +0200	[thread overview]
Message-ID: <20150925113429.GF27119@pali> (raw)
In-Reply-To: <20150917051644.GA6665@amd>

On Thursday 17 September 2015 07:16:44 Pavel Machek wrote:
> 
> > >         if (image->depth == 1) {
> > >                 if (p->fix.visual == FB_VISUAL_TRUECOLOR ||
> > >                     p->fix.visual == FB_VISUAL_DIRECTCOLOR) {
> > >                         fgcolor = ((u32*)(p->pseudo_palette))[image->fg_color];
> > >                         bgcolor = ((u32*)(p->pseudo_palette))[image->bg_color];
> > >                 } else {
> > >                         fgcolor = image->fg_color;
> > >                         bgcolor = image->bg_color;
> > >                 }
> > > 
> > >                 if (32 % bpp == 0 && !start_index && !pitch_index &&
> > >                     ((width & (32/bpp-1)) == 0) &&
> > >                     bpp >= 8 && bpp <= 32)
> > >                         fast_imageblit(image, p, dst1, fgcolor, bgcolor);
> > >                 else
> > >                         slow_imageblit(image, p, dst1, fgcolor, bgcolor,
> > >                                         start_index, pitch_index);
> > >         } else
> > >                 color_imageblit(image, p, dst1, start_index, pitch_i
> > > 
> > > 
> > > Notice that bpp is not checked for zero, and thus bpp==0 is totally
> > > feasible?   resulting in 32/bpp crashing the kernel?
> > > 
> > 
> > Hm... this could really be a problem! But how to patch it? Which branch
> > should be called (fast_ or slow_ function) if bpp is zero?
> > 
> > And is there some way to force kernel to dump backtrace into dmesg when
> > division by zero occur?
> 
> You can do WARN_ON(bpp==1) ... and should probably return in that
> case.
> 
> 								Pavel

Does not make sense to call slow_ function? In that if condition check
also that bpp is nonzero...

-- 
Pali Rohár
pali.rohar@gmail.com

  reply	other threads:[~2015-09-25 11:34 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-24 16:03 omapdss: Division by zero in kernel Pali Rohár
2015-07-24 16:03 ` Pali Rohár
2015-07-28 11:56 ` Pali Rohár
2015-07-28 11:56   ` Pali Rohár
2015-08-18 14:00   ` Pali Rohár
2015-08-18 14:00     ` Pali Rohár
2015-08-18 14:11 ` Peter Teoh
2015-08-18 14:11   ` Peter Teoh
2015-08-19  8:11   ` Pali Rohár
2015-08-19  8:11     ` Pali Rohár
2015-09-17  5:16     ` Pavel Machek
2015-09-17  5:16       ` Pavel Machek
2015-09-25 11:34       ` Pali Rohár [this message]
2015-09-25 11:34         ` Pali Rohár
2015-08-21  8:42 ` Tomi Valkeinen
2015-08-21  8:42   ` Tomi Valkeinen
2015-08-21  8:42   ` Tomi Valkeinen
2015-08-21  8:48   ` Pali Rohár
2015-08-21  8:48     ` Pali Rohár
2015-08-21  9:17     ` Tomi Valkeinen
2015-08-21  9:17       ` Tomi Valkeinen
2015-08-21  9:17       ` Tomi Valkeinen
2015-08-26 10:16       ` Pali Rohár
2015-08-26 10:16         ` Pali Rohár

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=20150925113429.GF27119@pali \
    --to=pali.rohar@gmail.com \
    --cc=aaro.koskinen@iki.fi \
    --cc=htmldeveloper@gmail.com \
    --cc=jsarha@ti.com \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=pavel@ucw.cz \
    --cc=plagnioj@jcrosoft.com \
    --cc=sre@kernel.org \
    --cc=tomi.valkeinen@ti.com \
    --cc=tony@atomide.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.