All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Corbet <corbet@lwn.net>
To: Ezequiel Garcia <elezegarcia@gmail.com>
Cc: linux-media@vger.kernel.org,
	Mauro Carvalho Chehab <mchehab@redhat.com>,
	Pawel Osciak <pawel@osciak.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [PATCH 9/9] videobuf2-core: Change vb2_queue_init return type to void
Date: Tue, 28 Aug 2012 10:55:52 -0600	[thread overview]
Message-ID: <20120828105552.1e39b32b@lwn.net> (raw)
In-Reply-To: <CALF0-+WjGYhHd4xshW9fOtdVp-Cgmz-7t8JzzoqMW-w0pNv85A@mail.gmail.com>

On Sun, 26 Aug 2012 19:59:40 -0300
Ezequiel Garcia <elezegarcia@gmail.com> wrote:

> 1.
> Why do we need to check for all these conditions in the first place?
> There are many other functions relying on "struct vb2_queue *q"
> not being null (almost all of them) and we don't check for it.
> What makes vb2_queue_init() so special that we need to check for it?

There are plenty of developers who would argue for the removal of the
BUG_ON(!q) line regardless, since the kernel will quickly crash shortly
thereafter.  I'm a bit less convinced; there are attackers who are very
good at exploiting null pointer dereferences, and some systems still allow
the low part of the address space to be mapped.

In general, IMO, checks for consistency make sense; it's nice if the
kernel can *tell* you that something is wrong.

What's a mistake is the BUG_ON; that should really only be used in places
where things simply cannot continue.  In this case, the initialization can
be failed, the V4L2 device will likely be unavailable, but everything else
can continue as normal.  -EINVAL is the right response here.

> 2.
> If a DoS attack is the concern here, I wonder how this would be achieved?
> vb2_queue_init() is an "internal" (so to speak) function, that will only
> be called by videobuf2 drivers.

It would depend on a driver bug, but the sad fact is that driver bugs do
exist.  Perhaps it's as simple as getting the driver module to load when
the hardware is absent, for example.

> I'm not arguing, truly. I wan't to understand what's the rationale behind
> putting BUG_ON, or WARN_ON, or return -EINVAL in a case like this.

In short: we want the kernel to be as robust as it can be.  Detecting
problems before they can snowball helps in that regard.  Hitting the big
red BUG_ON() button in situations where things can continue does not.  At
least, that's how I see it.

jon

  reply	other threads:[~2012-08-28 16:55 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-25  3:08 [PATCH 1/9] s5p: Don't check vb2_queue_init() return value Ezequiel Garcia
2012-08-25  3:08 ` [PATCH 2/9] coda: " Ezequiel Garcia
2012-08-25  3:09 ` [PATCH 3/9] mem2mem-emmaprp: " Ezequiel Garcia
2012-08-25  3:09 ` [PATCH 4/9] mem2mem-deinterlace: " Ezequiel Garcia
2012-08-25  3:09 ` [PATCH 5/9] marvel-cam: " Ezequiel Garcia
2012-08-25  3:09 ` [PATCH 6/9] soc-camera: " Ezequiel Garcia
2012-08-25  3:09 ` [PATCH 7/9] stk1160: Don't check vb2_queue_init() return Ezequiel Garcia
2012-08-25  3:09 ` [PATCH 8/9] mem2mem_testdev: Don't check vb2_queue_init() return value Ezequiel Garcia
2012-08-25  3:09 ` [PATCH 9/9] videobuf2-core: Change vb2_queue_init return type to void Ezequiel Garcia
2012-08-25 15:28   ` Jonathan Corbet
2012-08-25 16:12     ` Ezequiel Garcia
2012-08-25 17:30       ` Jonathan Corbet
2012-08-26 22:59         ` Ezequiel Garcia
2012-08-28 16:55           ` Jonathan Corbet [this message]
2012-08-28 17:23             ` Ezequiel Garcia
2012-09-15 12:48               ` Mauro Carvalho Chehab
2012-09-15 13:05                 ` Ezequiel Garcia
     [not found]                   ` <20120915103719.4f038ee0@redhat.com>
     [not found]                     ` <CALF0-+Vrf+t1eN+0LRGP4rBrrbSxrwTgkY1205v=7=5YQxsqWg@mail.gmail.com>
2012-09-15 15:22                       ` Ezequiel Garcia
2012-09-15 16:13                         ` Mauro Carvalho Chehab

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=20120828105552.1e39b32b@lwn.net \
    --to=corbet@lwn.net \
    --cc=elezegarcia@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mchehab@redhat.com \
    --cc=pawel@osciak.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.