Skip to content

Commit eb97b2f

Browse files
lyan3wenlingz
authored andcommitted
tools: acrn-manager: remove assumption of fd num less than 1024
mngr_send_msg() could take mngr descriptor or real socket fd as argument based on an assuption that real socket fd is less than 1024, which may be an issue. This commit takes the real socket fd as descriptor, to avoid the conversion between them. Tracked-On: #1477 Signed-off-by: Tao, Yuhong <yuhong.tao@intel.com> Signed-off-by: Yan, Like <like.yan@intel.com>
1 parent f582757 commit eb97b2f

File tree

1 file changed

+11
-56
lines changed

1 file changed

+11
-56
lines changed

tools/acrn-manager/acrn_mngr.c

Lines changed: 11 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ static int check_dir(const char *path)
3939
}
4040

4141
#define MNGR_SOCK_FMT "/run/acrn/mngr/%s.%d.socket"
42-
#define MNGR_HANDLER_OFFSET 1024 /* The developer should not create more than
43-
1024 file descriptors in his application */
4442
#define MNGR_MAX_HANDLER 8
4543
#define MNGR_MAX_CLIENT 4
4644
#define PATH_LEN 128
@@ -296,32 +294,6 @@ static struct mngr_fd *desc_to_mfd(int val)
296294
return find;
297295
}
298296

299-
static int alloc_new_val_and_insert(struct mngr_fd *mfd)
300-
{
301-
int i;
302-
struct mngr_fd *fd;
303-
304-
pthread_mutex_lock(&mngr_fd_mtx);
305-
306-
mfd->desc = -1;
307-
for (i = 0; i < MNGR_MAX_HANDLER; i++) {
308-
fd = desc_to_mfd_nolock(i + MNGR_HANDLER_OFFSET);
309-
if (!fd) {
310-
mfd->desc = i + MNGR_HANDLER_OFFSET;
311-
break;
312-
}
313-
}
314-
315-
if (mfd->desc >= 0)
316-
LIST_INSERT_HEAD(&mngr_fd_head, mfd, list);
317-
else
318-
pdebug();
319-
320-
pthread_mutex_unlock(&mngr_fd_mtx);
321-
322-
return mfd->desc;
323-
}
324-
325297
static int create_new_server(const char *name)
326298
{
327299
struct mngr_fd *mfd;
@@ -374,18 +346,14 @@ static int create_new_server(const char *name)
374346
goto poll_err;
375347
}
376348

349+
mfd->desc = mfd->fd;
377350
/* add this to mngr_fd_head */
378-
ret = alloc_new_val_and_insert(mfd);
379-
if (ret < 0) {
380-
pdebug();
381-
goto alloc_val;
382-
}
351+
pthread_mutex_lock(&mngr_fd_mtx);
352+
LIST_INSERT_HEAD(&mngr_fd_head, mfd, list);
353+
pthread_mutex_unlock(&mngr_fd_mtx);
383354

384-
return ret;
355+
return mfd->desc;
385356

386-
alloc_val:
387-
mfd->polling = 0;
388-
pthread_join(mfd->poll_thread, NULL);
389357
poll_err:
390358
mfd->listening = 0;
391359
pthread_join(mfd->listen_thread, NULL);
@@ -491,17 +459,15 @@ static int connect_to_server(const char *name)
491459
goto connect_err;
492460
}
493461

462+
mfd->desc = mfd->fd;
494463
/* add this to mngr_fd_head */
495-
ret = alloc_new_val_and_insert(mfd);
496-
if (ret < 0) {
497-
pdebug();
498-
goto alloc_val;
499-
}
464+
pthread_mutex_lock(&mngr_fd_mtx);
465+
LIST_INSERT_HEAD(&mngr_fd_head, mfd, list);
466+
pthread_mutex_unlock(&mngr_fd_mtx);
500467

501468
closedir(dir);
502-
return ret;
469+
return mfd->desc;
503470

504-
alloc_val:
505471
connect_err:
506472
close(mfd->fd);
507473
sock_err:
@@ -599,22 +565,11 @@ int mngr_add_handler(int server_fd, unsigned id,
599565
int mngr_send_msg(int fd, struct mngr_msg *req, struct mngr_msg *ack,
600566
unsigned timeout)
601567
{
602-
int socket_fd;
603-
struct mngr_fd *mfd;
568+
int socket_fd = fd;
604569
fd_set rfd, wfd;
605570
struct timeval t;
606571
int ret;
607572

608-
if (fd < MNGR_HANDLER_OFFSET)
609-
socket_fd = fd;
610-
else {
611-
mfd = desc_to_mfd(fd);
612-
if (!mfd)
613-
socket_fd = fd;
614-
else
615-
socket_fd = mfd->fd;
616-
}
617-
618573
if (!req) {
619574
printf("%s %d\n", __FUNCTION__, __LINE__);
620575
return -1;

0 commit comments

Comments
 (0)