[pulseaudio-discuss] [PATCH 1/3] pstream: Don't split (non-SHM) memblocks
Tanu Kaskinen
tanu.kaskinen at linux.intel.com
Tue Mar 10 06:25:17 PDT 2015
On Fri, 2015-03-06 at 21:20 +0100, Peter Meerwald wrote:
> On Thu, 5 Mar 2015, David Henningsson wrote:
>
> > In case SHM is full or disabled, audio data is sent through the
> > io/srbchannel. When this channel in turn gets full, memblocks
> > could previously be split up. This could lead to crashes in case
> > the split was on non-frame boundaries (in combination with full
> > memblock queues).
> >
> > BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=88452
> > Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> > ---
> > src/pulsecore/pstream.c | 67 +++++++++++++++++++++++--------------------------
> > 1 file changed, 31 insertions(+), 36 deletions(-)
> >
> > diff --git a/src/pulsecore/pstream.c b/src/pulsecore/pstream.c
> > index b0ed5a7..8c05a87 100644
> > --- a/src/pulsecore/pstream.c
> > +++ b/src/pulsecore/pstream.c
> > @@ -682,6 +682,36 @@ fail:
> > return -1;
> > }
> >
> > +static void memblock_complete(pa_pstream *p, struct pstream_read *re) {
> > + size_t l;
> > + pa_memchunk chunk;
> > + int64_t offset;
> > +
> > + if (!p->receive_memblock_callback)
> > + return;
> > +
> > + /* Is this memblock data? Then pass it to the user */
> > + l = re->index - PA_PSTREAM_DESCRIPTOR_SIZE;
> > + if (l <= 0)
>
> l is an unsigned data type; the difference should not become negative and
> the check should just be for (l == 0)
There are many places where this kind of redundant negativity checks are
done (I suppose Lennart likes that style), so for consistency reasons, I
wouldn't say that the check *should* be just for (l == 0). I certainly
wouldn't be against using (l == 0) either, though (I don't personally
like the style of using redundant negativity checks).
But that's maybe irrelevant anyway, because I think the whole check is
redundant. There is a check elsewhere that ensures that empty memblocks
are rejected, so l can never be zero.
Even if David prefers to keep the check "just in case", the comment
certainly needs editing. "Is this memblock data?" is a nonsensical
question here - of course it's memblock data, that should be obvious
from the function name.
Otherwise this patch looks good to me.
--
Tanu
More information about the pulseaudio-discuss
mailing list