mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 00:59:55 -04:00
greybus: explicitly mark cookies as opaque
Use simple macros to mark the conversion of an URB pointer into an opaque cookie value (and vice-versa). We scramble some bits, but the main point is to make it explicit where we're returning and using opaque values. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c002b0ec60
commit
2292bac5e7
@@ -16,6 +16,13 @@
|
||||
#include "svc_msg.h"
|
||||
#include "kernel_ver.h"
|
||||
|
||||
/*
|
||||
* Macros for making pointers explicitly opaque, such that the result
|
||||
* isn't valid but also can't be mistaken for an ERR_PTR() value.
|
||||
*/
|
||||
#define conceal_urb(urb) ((void *)((uintptr_t)(urb) ^ 0xbad))
|
||||
#define reveal_urb(cookie) ((void *)((uintptr_t)(cookie) ^ 0xbad))
|
||||
|
||||
/* Memory sizes for the buffers sent to/from the ES1 controller */
|
||||
#define ES1_SVC_MSG_SIZE (sizeof(struct svc_msg) + SZ_64K)
|
||||
#define ES1_GBUF_MSG_SIZE PAGE_SIZE
|
||||
@@ -241,12 +248,12 @@ static void *buffer_send(struct greybus_host_device *hd, u16 dest_cport_id,
|
||||
return ERR_PTR(retval);
|
||||
}
|
||||
|
||||
return urb;
|
||||
return conceal_urb(urb);
|
||||
}
|
||||
|
||||
static void buffer_cancel(void *cookie)
|
||||
{
|
||||
struct urb *urb = cookie;
|
||||
struct urb *urb = reveal_urb(cookie);
|
||||
|
||||
/*
|
||||
* We really should be defensive and track all outstanding
|
||||
|
||||
Reference in New Issue
Block a user