Re: [PATCH v2] i2c: cp2615: handle allocation failure
From: Christophe JAILLET
Date: Fri Aug 28 2026 - 16:42:37 EST
Le 28/08/2026 à 19:09, Andi Shyti a écrit :
Hi Triet,
thank you for your patch.
On Tue, Aug 18, 2026 at 11:17:01AM +0000, Triet Hoang wrote:
Check the result of kzalloc_obj() and return -ENOMEM
when the allocation fails instead of passing a NULL pointer
to the message initialization helpers, which would return -EINVAL.
Signed-off-by: Triet Hoang <triet.hoang.dev@xxxxxxxxx>
---
Changes in v2:
- Clarify the commit message to describe the actual behavior change.
- Fix coding style regression
Next time please don't send your v2 as in reply to v1. It
confuses me.
---
drivers/i2c/busses/i2c-cp2615.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/i2c/busses/i2c-cp2615.c b/drivers/i2c/busses/i2c-cp2615.c
index 951de6249834..c1275fcad636 100644
--- a/drivers/i2c/busses/i2c-cp2615.c
+++ b/drivers/i2c/busses/i2c-cp2615.c
@@ -128,6 +128,9 @@ cp2615_i2c_send(struct usb_interface *usbif, struct cp2615_i2c_transfer *i2c_w)
struct usb_device *usbdev = interface_to_usbdev(usbif);
int res = cp2615_init_i2c_msg(msg, i2c_w);
+ if (!msg)
+ return -ENOMEM;
+
Your patch looks good, but, as you are at it, can I ask you here
Yes, the patch looks good (and the proposal below even better), but is not a must have.
In both cases, the error handling ends being done at [1].
This is not obvious at all when reading the code, but looks safe.
Just my 2c.
CJ
[1]: https://elixir.bootlin.com/linux/v7.2/source/drivers/i2c/busses/i2c-cp2615.c#L85
a little effort? Personally I don't like and I find unreadable
the form:
struct cp2615_iop_msg *msg = kzalloc_obj(*msg);
...
if (!msg)
return -ENOMEM.
Important assignments, like kzalloc_*(), shouldn't be made during
declaration. I prefer the form:
struct cp2615_iop_msg *msg;
...
msg = kzalloc_obj(*msg);
if (!msg)
return -ENOMEM.
Works for you? Do you mind updating in v3?
Thanks,
Andi
if (!res)
res = usb_bulk_msg(usbdev, usb_sndbulkpipe(usbdev, IOP_EP_OUT),
msg, ntohs(msg->length), NULL, 0);