From: Greg Kroah-Hartman Date: Wed, 1 Oct 2014 01:21:36 +0000 (-0700) Subject: greybus: es1: no BUG_ON() code, report an error and recover. X-Git-Tag: v4.9-rc1~119^2~378^2~21^2~2070 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=a6cdb3492e845dd1c784d35e0cfec0c6ac66aaef;p=karo-tx-linux.git greybus: es1: no BUG_ON() code, report an error and recover. --- diff --git a/drivers/staging/greybus/es1-ap-usb.c b/drivers/staging/greybus/es1-ap-usb.c index 410acd304dee..f23c67414ecf 100644 --- a/drivers/staging/greybus/es1-ap-usb.c +++ b/drivers/staging/greybus/es1-ap-usb.c @@ -116,7 +116,13 @@ static int alloc_gbuf_data(struct gbuf *gbuf, unsigned int size, gfp_t gfp_mask) * we will encode the cport number in the first byte of the buffer, so * set the second byte to be the "transfer buffer" */ - BUG_ON(gbuf->cport_id > (u16)U8_MAX); + if (gbuf->cport_id > (u16)U8_MAX) { + pr_err("gbuf->cport_id is '%d' and is out of range!\n", + gbuf->cport_id); + kfree(buffer); + return -EINVAL; + } + buffer[0] = gbuf->cport_id; gbuf->transfer_buffer = &buffer[1]; gbuf->transfer_buffer_length = size;