[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] console: fix listing of directory in netfs_get_dirents
From: |
Samuel Thibault |
Subject: |
Re: [PATCH] console: fix listing of directory in netfs_get_dirents |
Date: |
Thu, 11 Nov 2021 18:45:47 +0100 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
Applied, thanks!
Samuel
Andrea Monaco, le jeu. 11 nov. 2021 10:45:48 +0100, a ecrit:
>
> Hello,
>
>
> on my system, listing /dev/vcs which is translated by /hurd/console
> gives the following:
>
> $ ls /dev/vcs
> ls: reading directory '/dev/vcs': Invalid argument
> 1 2 3 4 5 6
>
> That error is probably harmless but annoying.
>
> It is caused by netfs_get_dirents the last time it is called during
> listing, because it calls mmap with size = 0.
>
> Anyway, here's the patch.
>
>
> Cheers,
>
> Andrea Monaco
>
>
>
> diff --git a/console/console.c b/console/console.c
> index 6e83fbbc..7306b6b8 100644
> --- a/console/console.c
> +++ b/console/console.c
> @@ -750,7 +750,7 @@ netfs_get_dirents (struct iouser *cred, struct node *dir,
> mach_msg_type_number_t *data_len,
> vm_size_t max_data_len, int *data_entries)
> {
> - error_t err;
> + error_t err = 0;
> int count = 0;
> size_t size = 0; /* Total size of our return block. */
> struct vcons *first_vcons = NULL;
> @@ -813,11 +813,16 @@ netfs_get_dirents (struct iouser *cred, struct node
> *dir,
> bump_size ("input");
> }
>
> - /* Allocate it. */
> - *data = mmap (0, size, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0);
> - err = ((void *) *data == (void *) -1) ? errno : 0;
> + if (!size)
> + *data_len = *data_entries = 0;
> + else
> + {
> + /* Allocate it. */
> + *data = mmap (0, size, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0);
> + err = ((void *) *data == (void *) -1) ? errno : 0;
> + }
>
> - if (! err)
> + if (size && !err)
> /* Copy out the result. */
> {
> char *p = *data;
>
--
Samuel
<y> la vraie vie, c'est quand le prompt passe de $ à #