Skip to content

Commit 3d4f83a

Browse files
danieldegrassemmahadevan108
authored andcommitted
drivers: wifi: eswifi: fix casts for 64 bit pointers
The eswifi driver uses an integer to identify the socket used for each connection, which must be cast to and from a `void *`. This causes warnings on 64 bit platforms, as precision is lost when casting from a `void *` to `int`. Use a `intptr_t` type to store the socket value to resolve this warning. Also, fix a function signature for the `accept_cb` to use `size_t` instead of `int` for the length Fixes #80242 Signed-off-by: Daniel DeGrasse <[email protected]>
1 parent 1e83368 commit 3d4f83a

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

drivers/wifi/eswifi/eswifi_socket_offload.c

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ LOG_MODULE_DECLARE(LOG_MODULE_NAME);
2828
* a special meaning in the fdtable subsys.
2929
*/
3030
#define SD_TO_OBJ(sd) ((void *)(sd + 1))
31-
#define OBJ_TO_SD(obj) (((int)obj) - 1)
31+
#define OBJ_TO_SD(obj) (((intptr_t)obj) - 1)
3232
/* Default socket context (50CE) */
3333
#define ESWIFI_INIT_CONTEXT INT_TO_POINTER(0x50CE)
3434

@@ -55,7 +55,7 @@ static void __process_received(struct net_context *context,
5555
static int eswifi_socket_connect(void *obj, const struct sockaddr *addr,
5656
socklen_t addrlen)
5757
{
58-
int sock = OBJ_TO_SD(obj);
58+
intptr_t sock = OBJ_TO_SD(obj);
5959
struct eswifi_off_socket *socket;
6060
int ret;
6161

@@ -94,7 +94,7 @@ static int eswifi_socket_connect(void *obj, const struct sockaddr *addr,
9494
static int eswifi_socket_listen(void *obj, int backlog)
9595
{
9696
struct eswifi_off_socket *socket;
97-
int sock = OBJ_TO_SD(obj);
97+
intptr_t sock = OBJ_TO_SD(obj);
9898
int ret;
9999

100100
eswifi_lock(eswifi);
@@ -107,7 +107,7 @@ static int eswifi_socket_listen(void *obj, int backlog)
107107
}
108108

109109
void __eswifi_socket_accept_cb(struct net_context *context, struct sockaddr *addr,
110-
unsigned int len, int val, void *data)
110+
size_t len, int val, void *data)
111111
{
112112
struct sockaddr *addr_target = data;
113113

@@ -117,7 +117,7 @@ void __eswifi_socket_accept_cb(struct net_context *context, struct sockaddr *add
117117
static int __eswifi_socket_accept(void *obj, struct sockaddr *addr,
118118
socklen_t *addrlen)
119119
{
120-
int sock = OBJ_TO_SD(obj);
120+
intptr_t sock = OBJ_TO_SD(obj);
121121
struct eswifi_off_socket *socket;
122122
int ret;
123123

@@ -146,7 +146,7 @@ static int eswifi_socket_accept(void *obj, struct sockaddr *addr,
146146
socklen_t *addrlen)
147147
{
148148
int fd = zvfs_reserve_fd();
149-
int sock;
149+
intptr_t sock;
150150

151151
if (fd < 0) {
152152
return -1;
@@ -240,7 +240,7 @@ static int map_credentials(int sd, const void *optval, socklen_t optlen)
240240
static int eswifi_socket_setsockopt(void *obj, int level, int optname,
241241
const void *optval, socklen_t optlen)
242242
{
243-
int sd = OBJ_TO_SD(obj);
243+
intptr_t sd = OBJ_TO_SD(obj);
244244
int ret;
245245

246246
if (IS_ENABLED(CONFIG_NET_SOCKETS_SOCKOPT_TLS) && level == SOL_TLS) {
@@ -265,7 +265,7 @@ static int eswifi_socket_setsockopt(void *obj, int level, int optname,
265265
static ssize_t eswifi_socket_send(void *obj, const void *buf, size_t len,
266266
int flags)
267267
{
268-
int sock = OBJ_TO_SD(obj);
268+
intptr_t sock = OBJ_TO_SD(obj);
269269
struct eswifi_off_socket *socket;
270270
int ret;
271271
int offset;
@@ -320,7 +320,7 @@ static ssize_t eswifi_socket_sendto(void *obj, const void *buf, size_t len,
320320
static ssize_t eswifi_socket_recv(void *obj, void *buf, size_t max_len,
321321
int flags)
322322
{
323-
int sock = OBJ_TO_SD(obj);
323+
intptr_t sock = OBJ_TO_SD(obj);
324324
struct eswifi_off_socket *socket;
325325
int len = 0, ret = 0;
326326
struct net_pkt *pkt;
@@ -400,7 +400,7 @@ static ssize_t eswifi_socket_recvfrom(void *obj, void *buf, size_t len,
400400

401401
static int eswifi_socket_close(void *obj)
402402
{
403-
int sock = OBJ_TO_SD(obj);
403+
intptr_t sock = OBJ_TO_SD(obj);
404404
struct eswifi_off_socket *socket;
405405
struct net_pkt *pkt;
406406
int ret;
@@ -467,7 +467,8 @@ static int eswifi_socket_poll(struct zsock_pollfd *fds, int nfds, int msecs)
467467
{
468468
struct eswifi_off_socket *socket;
469469
k_timeout_t timeout;
470-
int sock, ret;
470+
intptr_t sock;
471+
int ret;
471472
void *obj;
472473

473474
if (nfds != 1) {
@@ -540,7 +541,7 @@ static int eswifi_socket_poll(struct zsock_pollfd *fds, int nfds, int msecs)
540541
static int eswifi_socket_bind(void *obj, const struct sockaddr *addr,
541542
socklen_t addrlen)
542543
{
543-
int sock = OBJ_TO_SD(obj);
544+
intptr_t sock = OBJ_TO_SD(obj);
544545
struct eswifi_off_socket *socket;
545546
int ret;
546547

@@ -582,7 +583,7 @@ static bool eswifi_socket_is_supported(int family, int type, int proto)
582583
int eswifi_socket_create(int family, int type, int proto)
583584
{
584585
int fd = zvfs_reserve_fd();
585-
int sock;
586+
intptr_t sock;
586587

587588
if (fd < 0) {
588589
return -1;

0 commit comments

Comments
 (0)