Commit 201c53c6 authored by Kuen-Han Tsai's avatar Kuen-Han Tsai Committed by Greg Kroah-Hartman
Browse files

usb: gadget: Introduce free_usb_request helper



Introduce the free_usb_request() function that frees both the request's
buffer and the request itself.

This function serves as the cleanup callback for DEFINE_FREE() to enable
automatic, scope-based cleanup for usb_request pointers.

Signed-off-by: default avatarKuen-Han Tsai <khtsai@google.com>
Link: https://lore.kernel.org/r/20250916-ready-v1-2-4997bf277548@google.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20250916-ready-v1-2-4997bf277548@google.com
parent bfb1d99d
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#ifndef __LINUX_USB_GADGET_H
#define __LINUX_USB_GADGET_H

#include <linux/cleanup.h>
#include <linux/configfs.h>
#include <linux/device.h>
#include <linux/errno.h>
@@ -293,6 +294,28 @@ static inline void usb_ep_fifo_flush(struct usb_ep *ep)

/*-------------------------------------------------------------------------*/

/**
 * free_usb_request - frees a usb_request object and its buffer
 * @req: the request being freed
 *
 * This helper function frees both the request's buffer and the request object
 * itself by calling usb_ep_free_request(). Its signature is designed to be used
 * with DEFINE_FREE() to enable automatic, scope-based cleanup for usb_request
 * pointers.
 */
static inline void free_usb_request(struct usb_request *req)
{
	if (!req)
		return;

	kfree(req->buf);
	usb_ep_free_request(req->ep, req);
}

DEFINE_FREE(free_usb_request, struct usb_request *, free_usb_request(_T))

/*-------------------------------------------------------------------------*/

struct usb_dcd_config_params {
	__u8  bU1devExitLat;	/* U1 Device exit Latency */
#define USB_DEFAULT_U1_DEV_EXIT_LAT	0x01	/* Less then 1 microsec */