The commit a8b9b96e959f3c035af20b1bd2ba67b0b7269b19 ("tipc: fix race in disc create/delete") leads to the following static checker warning: net/tipc/discover.c:352 tipc_disc_create() warn: possible memory leak of 'req' The risk of memory leak really exists in practice. Especially when it's failed to allocate memory for "req->buf", tipc_disc_create() doesn't free its allocated memory, instead just directly returns with ENOMEM error code. In this situation, memory leak, of course, happens.
Unified · Split
| @@ -348,8 +348,10 @@ int tipc_disc_create(struct tipc_bearer *b_ptr, struct tipc_media_addr *dest) · 347 unmodified lines | |||
| 348 | return -ENOMEM; | 348 | return -ENOMEM; |
| 349 | 349 | ||
| 350 | req->buf = tipc_buf_acquire(INT_H_SIZE); | 350 | req->buf = tipc_buf_acquire(INT_H_SIZE); |
| 351 | if (!req->buf) | 351 | if (!req->buf) { |
| 352 | kfree(req); | ||
| 352 | return -ENOMEM; | 353 | return -ENOMEM; |
| 354 | } | ||
| 353 | 355 | ||
| 354 | tipc_disc_init_msg(req->buf, DSC_REQ_MSG, b_ptr); | 356 | tipc_disc_init_msg(req->buf, DSC_REQ_MSG, b_ptr); |
| 355 | memcpy(&req->dest, dest, sizeof(*dest)); | 357 | memcpy(&req->dest, dest, sizeof(*dest)); |