* snd_usb_endpoint_free
@ 2014-06-25 6:28 Julia Lawall
2014-06-25 6:50 ` snd_usb_endpoint_free Julia Lawall
0 siblings, 1 reply; 5+ messages in thread
From: Julia Lawall @ 2014-06-25 6:28 UTC (permalink / raw)
To: perex, tiwai, alsa-devel
The function snd_usb_endpoint_free in sound/usb/endpoint.c is defined as
follows:
void snd_usb_endpoint_free(struct list_head *head)
{
struct snd_usb_endpoint *ep;
ep = list_entry(head, struct snd_usb_endpoint, list);
release_urbs(ep, 1);
kfree(ep);
}
I wonder if the final kfree should be list_del? In practice, this
function is only used from snd_usb_audio_disconnect in sound/usb/card.c
where the entire list is destroyed, but it seems like quite a generic
function that someone may someday want to use for just freeing one entry.
julia
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: snd_usb_endpoint_free
2014-06-25 6:28 snd_usb_endpoint_free Julia Lawall
@ 2014-06-25 6:50 ` Julia Lawall
2014-06-25 10:13 ` snd_usb_endpoint_free Daniel Mack
0 siblings, 1 reply; 5+ messages in thread
From: Julia Lawall @ 2014-06-25 6:50 UTC (permalink / raw)
To: perex; +Cc: tiwai, alsa-devel
On Wed, 25 Jun 2014, Julia Lawall wrote:
> The function snd_usb_endpoint_free in sound/usb/endpoint.c is defined as
> follows:
>
> void snd_usb_endpoint_free(struct list_head *head)
> {
> struct snd_usb_endpoint *ep;
>
> ep = list_entry(head, struct snd_usb_endpoint, list);
> release_urbs(ep, 1);
> kfree(ep);
> }
>
> I wonder if the final kfree should be list_del? In practice, this
Sorry, the question should be "I wonder if this function should also use
list_del", since list_del doesn't subsume kfree.
julia
> function is only used from snd_usb_audio_disconnect in sound/usb/card.c
> where the entire list is destroyed, but it seems like quite a generic
> function that someone may someday want to use for just freeing one entry.
>
> julia
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: snd_usb_endpoint_free
2014-06-25 6:50 ` snd_usb_endpoint_free Julia Lawall
@ 2014-06-25 10:13 ` Daniel Mack
2014-06-25 10:16 ` snd_usb_endpoint_free Julia Lawall
2014-06-25 12:33 ` snd_usb_endpoint_free Takashi Iwai
0 siblings, 2 replies; 5+ messages in thread
From: Daniel Mack @ 2014-06-25 10:13 UTC (permalink / raw)
To: Julia Lawall, perex; +Cc: tiwai, alsa-devel
Hi Julia,
On 06/25/2014 08:50 AM, Julia Lawall wrote:
> On Wed, 25 Jun 2014, Julia Lawall wrote:
>> The function snd_usb_endpoint_free in sound/usb/endpoint.c is defined as
>> follows:
>>
>> void snd_usb_endpoint_free(struct list_head *head)
>> {
>> struct snd_usb_endpoint *ep;
>>
>> ep = list_entry(head, struct snd_usb_endpoint, list);
>> release_urbs(ep, 1);
>> kfree(ep);
>> }
>>
>> I wonder if the final kfree should be list_del? In practice, this
>
> Sorry, the question should be "I wonder if this function should also use
> list_del", since list_del doesn't subsume kfree.
>
> julia
>
>> function is only used from snd_usb_audio_disconnect in sound/usb/card.c
>> where the entire list is destroyed, but it seems like quite a generic
>> function that someone may someday want to use for just freeing one entry.
Jup, you're right, a list_del() in there wouldn't harm. However, it
currently wouldn't buy us anything either, and other functions we call
from snd_usb_audio_disconnect() for list members don't kill their own
list entry node themselves.
Thanks,
Daniel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: snd_usb_endpoint_free
2014-06-25 10:13 ` snd_usb_endpoint_free Daniel Mack
@ 2014-06-25 10:16 ` Julia Lawall
2014-06-25 12:33 ` snd_usb_endpoint_free Takashi Iwai
1 sibling, 0 replies; 5+ messages in thread
From: Julia Lawall @ 2014-06-25 10:16 UTC (permalink / raw)
To: Daniel Mack; +Cc: tiwai, alsa-devel
On Wed, 25 Jun 2014, Daniel Mack wrote:
> Hi Julia,
>
> On 06/25/2014 08:50 AM, Julia Lawall wrote:
> > On Wed, 25 Jun 2014, Julia Lawall wrote:
> >> The function snd_usb_endpoint_free in sound/usb/endpoint.c is defined as
> >> follows:
> >>
> >> void snd_usb_endpoint_free(struct list_head *head)
> >> {
> >> struct snd_usb_endpoint *ep;
> >>
> >> ep = list_entry(head, struct snd_usb_endpoint, list);
> >> release_urbs(ep, 1);
> >> kfree(ep);
> >> }
> >>
> >> I wonder if the final kfree should be list_del? In practice, this
> >
> > Sorry, the question should be "I wonder if this function should also use
> > list_del", since list_del doesn't subsume kfree.
> >
> > julia
> >
> >> function is only used from snd_usb_audio_disconnect in sound/usb/card.c
> >> where the entire list is destroyed, but it seems like quite a generic
> >> function that someone may someday want to use for just freeing one entry.
>
> Jup, you're right, a list_del() in there wouldn't harm. However, it
> currently wouldn't buy us anything either, and other functions we call
> from snd_usb_audio_disconnect() for list members don't kill their own
> list entry node themselves.
OK, thanks for the clarification.
julia
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: snd_usb_endpoint_free
2014-06-25 10:13 ` snd_usb_endpoint_free Daniel Mack
2014-06-25 10:16 ` snd_usb_endpoint_free Julia Lawall
@ 2014-06-25 12:33 ` Takashi Iwai
1 sibling, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2014-06-25 12:33 UTC (permalink / raw)
To: Daniel Mack; +Cc: Julia Lawall, alsa-devel
At Wed, 25 Jun 2014 12:13:25 +0200,
Daniel Mack wrote:
>
> Hi Julia,
>
> On 06/25/2014 08:50 AM, Julia Lawall wrote:
> > On Wed, 25 Jun 2014, Julia Lawall wrote:
> >> The function snd_usb_endpoint_free in sound/usb/endpoint.c is defined as
> >> follows:
> >>
> >> void snd_usb_endpoint_free(struct list_head *head)
> >> {
> >> struct snd_usb_endpoint *ep;
> >>
> >> ep = list_entry(head, struct snd_usb_endpoint, list);
> >> release_urbs(ep, 1);
> >> kfree(ep);
> >> }
> >>
> >> I wonder if the final kfree should be list_del? In practice, this
> >
> > Sorry, the question should be "I wonder if this function should also use
> > list_del", since list_del doesn't subsume kfree.
> >
> > julia
> >
> >> function is only used from snd_usb_audio_disconnect in sound/usb/card.c
> >> where the entire list is destroyed, but it seems like quite a generic
> >> function that someone may someday want to use for just freeing one entry.
>
> Jup, you're right, a list_del() in there wouldn't harm. However, it
> currently wouldn't buy us anything either, and other functions we call
> from snd_usb_audio_disconnect() for list members don't kill their own
> list entry node themselves.
Yes, it'd be better but the current code works as is, too.
In anyway, I'm going to add a fix later; we're working on a
disconnection race fix that involves with this function.
thanks,
Takashi
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-06-25 12:33 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-25 6:28 snd_usb_endpoint_free Julia Lawall
2014-06-25 6:50 ` snd_usb_endpoint_free Julia Lawall
2014-06-25 10:13 ` snd_usb_endpoint_free Daniel Mack
2014-06-25 10:16 ` snd_usb_endpoint_free Julia Lawall
2014-06-25 12:33 ` snd_usb_endpoint_free Takashi Iwai
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.