All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Oleksandr Andrushchenko <andr2000@gmail.com>
Cc: Juergen Gross <jgross@suse.com>,
	alsa-devel@alsa-project.org,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	linux-kernel@vger.kernel.org, perex@perex.cz,
	xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com
Subject: Re: [PATCH v2 3/5] ALSA: xen-front: Implement Xen event channel handling
Date: Tue, 24 Apr 2018 17:02:51 +0200	[thread overview]
Message-ID: <s5h604gsl44.wl-tiwai__22776.7796874561$1524582102$gmane$org@suse.de> (raw)
In-Reply-To: <f37a8eb9-8733-eae9-4c3e-312d864592fc@gmail.com>

On Tue, 24 Apr 2018 16:58:43 +0200,
Oleksandr Andrushchenko wrote:
> 
> On 04/24/2018 05:35 PM, Takashi Iwai wrote:
> > On Tue, 24 Apr 2018 16:29:15 +0200,
> > Oleksandr Andrushchenko wrote:
> >> On 04/24/2018 05:20 PM, Takashi Iwai wrote:
> >>> On Mon, 16 Apr 2018 08:24:51 +0200,
> >>> Oleksandr Andrushchenko wrote:
> >>>> +static irqreturn_t evtchnl_interrupt_req(int irq, void *dev_id)
> >>>> +{
> >>>> +	struct xen_snd_front_evtchnl *channel = dev_id;
> >>>> +	struct xen_snd_front_info *front_info = channel->front_info;
> >>>> +	struct xensnd_resp *resp;
> >>>> +	RING_IDX i, rp;
> >>>> +	unsigned long flags;
> >>>> +
> >>>> +	if (unlikely(channel->state != EVTCHNL_STATE_CONNECTED))
> >>>> +		return IRQ_HANDLED;
> >>>> +
> >>>> +	spin_lock_irqsave(&front_info->io_lock, flags);
> >>>> +
> >>>> +again:
> >>>> +	rp = channel->u.req.ring.sring->rsp_prod;
> >>>> +	/* ensure we see queued responses up to rp */
> >>>> +	rmb();
> >>>> +
> >>>> +	for (i = channel->u.req.ring.rsp_cons; i != rp; i++) {
> >>> I'm not familiar with Xen stuff in general, but through a quick
> >>> glance, this kind of code worries me a bit.
> >>>
> >>> If channel->u.req.ring.rsp_cons has a bogus number, this may lead to a
> >>> very long loop, no?  Better to have a sanity check of the ring buffer
> >>> size.
> >> In this loop I have:
> >> resp = RING_GET_RESPONSE(&channel->u.req.ring, i);
> >> and the RING_GET_RESPONSE macro is designed in the way that
> >> it wraps around when *i* in the question gets bigger than
> >> the ring size:
> >>
> >> #define RING_GET_REQUEST(_r, _idx)                    \
> >>      (&((_r)->sring->ring[((_idx) & (RING_SIZE(_r) - 1))].req))
> >>
> >> So, even if the counter has a bogus number it will not last long
> > Hm, this prevents from accessing outside the ring buffer, but does it
> > change the loop behavior?
> no, it doesn't
> > Suppose channel->u.req.ring_rsp_cons = 1, and rp = 0, the loop below
> > would still consume the whole 32bit counts, no?
> >
> > 	for (i = channel->u.req.ring.rsp_cons; i != rp; i++) {
> > 		resp = RING_GET_RESPONSE(&channel->u.req.ring, i);
> > 		...
> > 	}
> You are right here and the comment is totally valid.
> I'll put an additional check like here [1] and here [2]
> Will this address your comment?

Yep, this kind of sanity checks should work.


thanks,

Takashi

> >
> > Takashi
> Thank you,
> Oleksandr
> 
> [1]
> https://elixir.bootlin.com/linux/v4.17-rc2/source/drivers/block/xen-blkback/blkback.c#L1127
> [2]
> https://elixir.bootlin.com/linux/v4.17-rc2/source/drivers/block/xen-blkback/blkback.c#L1135
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2018-04-24 15:02 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-16  6:24 [PATCH v2 0/5] ALSA: xen-front: Add Xen para-virtualized frontend driver Oleksandr Andrushchenko
2018-04-16  6:24 ` [PATCH v2 1/5] ALSA: xen-front: Introduce Xen para-virtualized sound " Oleksandr Andrushchenko
2018-04-16 12:25   ` Juergen Gross
2018-04-17  8:24     ` Oleksandr Andrushchenko
2018-04-17  8:24     ` Oleksandr Andrushchenko
2018-04-16 12:25   ` Juergen Gross
2018-04-24 13:55   ` Takashi Iwai
2018-04-24 13:55     ` Takashi Iwai
2018-04-24 13:59     ` Oleksandr Andrushchenko
2018-04-24 13:59     ` Oleksandr Andrushchenko
2018-04-24 13:59       ` Oleksandr Andrushchenko
2018-04-24 13:55   ` Takashi Iwai
2018-04-16  6:24 ` Oleksandr Andrushchenko
2018-04-16  6:24 ` [PATCH v2 2/5] ALSA: xen-front: Read sound driver configuration from Xen store Oleksandr Andrushchenko
2018-04-16  6:24 ` Oleksandr Andrushchenko
2018-04-16 12:55   ` Juergen Gross
2018-04-17  8:42     ` Oleksandr Andrushchenko
2018-04-17  8:42     ` Oleksandr Andrushchenko
2018-04-17 11:08       ` Juergen Gross
2018-04-17 11:08       ` Juergen Gross
2018-04-16 12:55   ` Juergen Gross
2018-04-16  6:24 ` [PATCH v2 3/5] ALSA: xen-front: Implement Xen event channel handling Oleksandr Andrushchenko
2018-04-16  6:24 ` Oleksandr Andrushchenko
2018-04-16 13:12   ` Juergen Gross
2018-04-16 13:12   ` Juergen Gross
2018-04-17  8:58     ` Oleksandr Andrushchenko
2018-04-17 11:14       ` Juergen Gross
2018-04-17 11:21         ` Oleksandr Andrushchenko
2018-04-17 11:21         ` Oleksandr Andrushchenko
2018-04-17 11:14       ` Juergen Gross
2018-04-17  8:58     ` Oleksandr Andrushchenko
2018-04-16 13:53   ` kbuild test robot
2018-04-16 13:53     ` kbuild test robot
2018-04-16 13:53   ` kbuild test robot
2018-04-24 14:20   ` Takashi Iwai
2018-04-24 14:20     ` Takashi Iwai
2018-04-24 14:29     ` Oleksandr Andrushchenko
2018-04-24 14:29     ` Oleksandr Andrushchenko
2018-04-24 14:35       ` Takashi Iwai
2018-04-24 14:35         ` Takashi Iwai
2018-04-24 14:58         ` Oleksandr Andrushchenko
2018-04-24 14:58           ` Oleksandr Andrushchenko
2018-04-24 15:02           ` Takashi Iwai [this message]
2018-04-24 15:02           ` Takashi Iwai
2018-04-24 16:23             ` Oleksandr Andrushchenko
2018-04-24 16:23             ` Oleksandr Andrushchenko
2018-04-24 16:23               ` Oleksandr Andrushchenko
2018-04-25  8:26               ` Oleksandr Andrushchenko
2018-04-25  8:26               ` Oleksandr Andrushchenko
2018-04-25  8:26                 ` Oleksandr Andrushchenko
2018-04-25  9:02                 ` Takashi Iwai
2018-04-25  9:02                   ` Takashi Iwai
2018-04-25  9:04                   ` Oleksandr Andrushchenko
2018-04-25  9:04                     ` Oleksandr Andrushchenko
2018-04-25  9:04                   ` Oleksandr Andrushchenko
2018-04-25  9:02                 ` Takashi Iwai
2018-04-24 14:58         ` Oleksandr Andrushchenko
2018-04-24 14:35       ` Takashi Iwai
2018-04-24 14:20   ` Takashi Iwai
2018-04-16  6:24 ` [PATCH v2 4/5] ALSA: xen-front: Implement handling of shared buffers Oleksandr Andrushchenko
2018-04-16 13:39   ` Juergen Gross
2018-04-17  9:22     ` Oleksandr Andrushchenko
2018-04-17  9:22     ` Oleksandr Andrushchenko
2018-04-17 11:15       ` Juergen Gross
2018-04-17 11:15       ` Juergen Gross
2018-04-16 13:39   ` Juergen Gross
2018-04-16  6:24 ` Oleksandr Andrushchenko
2018-04-16  6:24 ` [PATCH v2 5/5] ALSA: xen-front: Implement ALSA virtual sound driver Oleksandr Andrushchenko
2018-04-16  6:24 ` Oleksandr Andrushchenko
2018-04-16 14:09   ` Juergen Gross
2018-04-16 14:09   ` Juergen Gross
2018-04-17 11:32     ` Oleksandr Andrushchenko
2018-04-17 12:26       ` Oleksandr Andrushchenko
2018-04-17 12:32         ` Juergen Gross
2018-04-17 12:32         ` Juergen Gross
2018-04-17 12:34           ` Oleksandr Andrushchenko
2018-04-17 12:34             ` Oleksandr Andrushchenko
2018-04-17 12:34           ` Oleksandr Andrushchenko
2018-04-17 12:26       ` Oleksandr Andrushchenko
2018-04-17 11:32     ` Oleksandr Andrushchenko
2018-04-16 14:59   ` kbuild test robot
2018-04-16 14:59   ` kbuild test robot
2018-04-16 14:59     ` kbuild test robot
2018-04-17 12:42 ` [PATCH v2 0/5] ALSA: xen-front: Add Xen para-virtualized frontend driver Oleksandr Andrushchenko
2018-04-17 12:42 ` Oleksandr Andrushchenko
2018-04-18 15:15 ` Oleksandr Andrushchenko
2018-04-18 15:15 ` Oleksandr Andrushchenko
2018-04-23  6:34   ` Oleksandr Andrushchenko
2018-04-23  6:34   ` Oleksandr Andrushchenko
2018-05-02  7:59 ` Oleksandr Andrushchenko
2018-05-02  7:59 ` Oleksandr Andrushchenko

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='s5h604gsl44.wl-tiwai__22776.7796874561$1524582102$gmane$org@suse.de' \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=andr2000@gmail.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oleksandr_andrushchenko@epam.com \
    --cc=perex@perex.cz \
    --cc=xen-devel@lists.xenproject.org \
    /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.