On 31-12-2011 10:19, Jonathan Nieder wrote:
> It is not common for dvb_net_init to fail, but after the patch
> "dvb_net_init: return -errno on error" it can fail due to running out
> of memory.  Handle this.
> 
>>From an audit of dvb_net_init callers.
> 
> Signed-off-by: Jonathan Nieder <jrnie...@gmail.com>
> ---
> That's the end of the series, though it would have been nice to
> also check the error handling in
> 
>  dvb/mantis/mantis_dvb.c
>  dvb/ngene/ngene-core.c (which looks a little strange)
>  dvb/pluto2/pluto2.c
>  dvb/pt1/pt1.c
>  dvb/ttpci/av7110.c 
>  dvb/ttpci/budget-core.c
>  dvb/ttusb-dec/ttusb_dec.c
>  video/au0828/au0828-dvb.c
>  video/cx18/cx18-dvb.c
>  video/cx231xx/cx231xx-dvb.c
>  video/em28xx/em28xx-dvb.c
>  video/pvrusb2/pvrusb2-dvb.c
>  video/saa7164/saa7164-dvb.c

It would be good if you could take a look on them and send us patches
for them if needed ;)

> 
> Hopefully this gives the idea, anyway.  Patch 2 is the important one,
> and the patches after that are just toys to show off patch 1.
> 
> Warning: the patches are _completely_ _untested_.  Test results
> (perhaps from provoking artificial failures in dvb_net_init), just
> like other comments, would be very welcome.
> 
> 'night,
> Jonathan
> 
>  drivers/media/dvb/firewire/firedtv-dvb.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/media/dvb/firewire/firedtv-dvb.c 
> b/drivers/media/dvb/firewire/firedtv-dvb.c
> index fd8bbbfa5c59..eb7496eab130 100644
> --- a/drivers/media/dvb/firewire/firedtv-dvb.c
> +++ b/drivers/media/dvb/firewire/firedtv-dvb.c
> @@ -203,7 +203,9 @@ int fdtv_dvb_register(struct firedtv *fdtv, const char 
> *name)
>       if (err)
>               goto fail_rem_frontend;
>  
> -     dvb_net_init(&fdtv->adapter, &fdtv->dvbnet, &fdtv->demux.dmx);
> +     err = dvb_net_init(&fdtv->adapter, &fdtv->dvbnet, &fdtv->demux.dmx);
> +     if (err)
> +             goto fail_disconnect_frontend;
>  
>       fdtv_frontend_init(fdtv, name);
>       err = dvb_register_frontend(&fdtv->adapter, &fdtv->fe);
> @@ -218,6 +220,7 @@ int fdtv_dvb_register(struct firedtv *fdtv, const char 
> *name)
>  
>  fail_net_release:
>       dvb_net_release(&fdtv->dvbnet);
> +fail_disconnect_frontend:
>       fdtv->demux.dmx.close(&fdtv->demux.dmx);
>  fail_rem_frontend:
>       fdtv->demux.dmx.remove_frontend(&fdtv->demux.dmx, &fdtv->frontend);

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to