bug-hurd
[Top][All Lists]
Advanced

[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 $ à #



reply via email to

[Prev in Thread] Current Thread [Next in Thread]