diff options
| -rw-r--r-- | drivers/media/dvb/dvb-usb/usb-urb.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/media/dvb/dvb-usb/usb-urb.c b/drivers/media/dvb/dvb-usb/usb-urb.c index 397f51a7b2ad..da93b9e982c0 100644 --- a/drivers/media/dvb/dvb-usb/usb-urb.c +++ b/drivers/media/dvb/dvb-usb/usb-urb.c | |||
| @@ -135,7 +135,7 @@ stream->buf_list[stream->buf_num], (long long)stream->dma_addr[stream->buf_num]) | |||
| 135 | 135 | ||
| 136 | static int usb_bulk_urb_init(struct usb_data_stream *stream) | 136 | static int usb_bulk_urb_init(struct usb_data_stream *stream) |
| 137 | { | 137 | { |
| 138 | int i; | 138 | int i, j; |
| 139 | 139 | ||
| 140 | if ((i = usb_allocate_stream_buffers(stream,stream->props.count, | 140 | if ((i = usb_allocate_stream_buffers(stream,stream->props.count, |
| 141 | stream->props.u.bulk.buffersize)) < 0) | 141 | stream->props.u.bulk.buffersize)) < 0) |
| @@ -143,9 +143,13 @@ static int usb_bulk_urb_init(struct usb_data_stream *stream) | |||
| 143 | 143 | ||
| 144 | /* allocate the URBs */ | 144 | /* allocate the URBs */ |
| 145 | for (i = 0; i < stream->props.count; i++) { | 145 | for (i = 0; i < stream->props.count; i++) { |
| 146 | if ((stream->urb_list[i] = usb_alloc_urb(0,GFP_ATOMIC)) == NULL) | 146 | stream->urb_list[i] = usb_alloc_urb(0, GFP_ATOMIC); |
| 147 | if (!stream->urb_list[i]) { | ||
| 148 | deb_mem("not enough memory for urb_alloc_urb!.\n"); | ||
| 149 | for (j = 0; j < i; j++) | ||
| 150 | usb_free_urb(stream->urb_list[i]); | ||
| 147 | return -ENOMEM; | 151 | return -ENOMEM; |
| 148 | 152 | } | |
| 149 | usb_fill_bulk_urb( stream->urb_list[i], stream->udev, | 153 | usb_fill_bulk_urb( stream->urb_list[i], stream->udev, |
| 150 | usb_rcvbulkpipe(stream->udev,stream->props.endpoint), | 154 | usb_rcvbulkpipe(stream->udev,stream->props.endpoint), |
| 151 | stream->buf_list[i], | 155 | stream->buf_list[i], |
| @@ -170,9 +174,14 @@ static int usb_isoc_urb_init(struct usb_data_stream *stream) | |||
| 170 | for (i = 0; i < stream->props.count; i++) { | 174 | for (i = 0; i < stream->props.count; i++) { |
| 171 | struct urb *urb; | 175 | struct urb *urb; |
| 172 | int frame_offset = 0; | 176 | int frame_offset = 0; |
| 173 | if ((stream->urb_list[i] = | 177 | |
| 174 | usb_alloc_urb(stream->props.u.isoc.framesperurb,GFP_ATOMIC)) == NULL) | 178 | stream->urb_list[i] = usb_alloc_urb(stream->props.u.isoc.framesperurb, GFP_ATOMIC); |
| 179 | if (!stream->urb_list[i]) { | ||
| 180 | deb_mem("not enough memory for urb_alloc_urb!\n"); | ||
| 181 | for (j = 0; j < i; j++) | ||
| 182 | usb_free_urb(stream->urb_list[i]); | ||
| 175 | return -ENOMEM; | 183 | return -ENOMEM; |
| 184 | } | ||
| 176 | 185 | ||
| 177 | urb = stream->urb_list[i]; | 186 | urb = stream->urb_list[i]; |
| 178 | 187 | ||
