On 05 Oct 2014, at 19:40 , Mateusz Guzik <m...@freebsd.org> wrote:

> Author: mjg
> Date: Sun Oct  5 19:40:29 2014
> New Revision: 272567
> URL: https://svnweb.freebsd.org/changeset/base/272567
> 
> Log:
>  filedesc: fix up breakage introduced in 272505
> 
>  Include sequence counter supports incoditionally [1]. This fixes reprted 
> build
>  problems with e.g. nvidia driver due to missing opt_capsicum.h.
> 
>  Replace fishy looking sizeof with offsetof. Make fde_seq the last member in
>  order to simplify calculations.

Seing this on an incremental build now for

bmake: stopped in /scratch/tmp/bz/head.svn/lib/libkvm

/storage/head/obj//mips.mipsel/scratch/tmp/bz/head.svn/tmp/usr/include/sys/filedesc.h:57:
 error: expected specifier-qualifier-list before 'seq_t'

I’ll see if this persists with a full build but I assume it will.

> 
>  Suggested by:        kib [1]
>  X-MFC:               with 272505
> 
> Modified:
>  head/sys/kern/kern_descrip.c
>  head/sys/sys/filedesc.h
> 
> Modified: head/sys/kern/kern_descrip.c
> ==============================================================================
> --- head/sys/kern/kern_descrip.c      Sun Oct  5 17:35:59 2014        
> (r272566)
> +++ head/sys/kern/kern_descrip.c      Sun Oct  5 19:40:29 2014        
> (r272567)
> @@ -295,7 +295,7 @@ _fdfree(struct filedesc *fdp, int fd, in
>       filecaps_free(&fde->fde_caps);
>       if (last)
>               return;
> -     bzero(fde_change(fde), fde_change_size);
> +     bzero(fde, fde_change_size);
>       fdunused(fdp, fd);
> #ifdef CAPABILITIES
>       seq_write_end(&fde->fde_seq);
> @@ -894,7 +894,7 @@ do_dup(struct thread *td, int flags, int
>       seq_write_begin(&newfde->fde_seq);
> #endif
>       filecaps_free(&newfde->fde_caps);
> -     memcpy(fde_change(newfde), fde_change(oldfde), fde_change_size);
> +     memcpy(newfde, oldfde, fde_change_size);
>       filecaps_copy(&oldfde->fde_caps, &newfde->fde_caps);
>       if ((flags & DUP_CLOEXEC) != 0)
>               newfde->fde_flags = oldfde->fde_flags | UF_EXCLOSE;
> @@ -2778,7 +2778,7 @@ dupfdopen(struct thread *td, struct file
> #ifdef CAPABILITIES
>               seq_write_begin(&newfde->fde_seq);
> #endif
> -             memcpy(fde_change(newfde), fde_change(oldfde), fde_change_size);
> +             memcpy(newfde, oldfde, fde_change_size);
>               filecaps_copy(&oldfde->fde_caps, &newfde->fde_caps);
> #ifdef CAPABILITIES
>               seq_write_end(&newfde->fde_seq);
> @@ -2793,8 +2793,8 @@ dupfdopen(struct thread *td, struct file
> #ifdef CAPABILITIES
>               seq_write_begin(&newfde->fde_seq);
> #endif
> -             memcpy(fde_change(newfde), fde_change(oldfde), fde_change_size);
> -             bzero(fde_change(oldfde), fde_change_size);
> +             memcpy(newfde, oldfde, fde_change_size);
> +             bzero(oldfde, fde_change_size);
>               fdunused(fdp, dfd);
> #ifdef CAPABILITIES
>               seq_write_end(&newfde->fde_seq);
> 
> Modified: head/sys/sys/filedesc.h
> ==============================================================================
> --- head/sys/sys/filedesc.h   Sun Oct  5 17:35:59 2014        (r272566)
> +++ head/sys/sys/filedesc.h   Sun Oct  5 19:40:29 2014        (r272567)
> @@ -33,10 +33,6 @@
> #ifndef _SYS_FILEDESC_H_
> #define       _SYS_FILEDESC_H_
> 
> -#ifdef _KERNEL
> -#include "opt_capsicum.h"
> -#endif
> -
> #include <sys/caprights.h>
> #include <sys/queue.h>
> #include <sys/event.h>
> @@ -55,24 +51,16 @@ struct filecaps {
> };
> 
> struct filedescent {
> -#ifdef CAPABILITIES
> -     seq_t            fde_seq;               /* if you need fde_file and 
> fde_caps in sync */
> -#endif
>       struct file     *fde_file;              /* file structure for open file 
> */
>       struct filecaps  fde_caps;              /* per-descriptor rights */
>       uint8_t          fde_flags;             /* per-process open file flags 
> */
> +     seq_t            fde_seq;               /* if you need fde_file and 
> fde_caps in sync */
> };
> #define       fde_rights      fde_caps.fc_rights
> #define       fde_fcntls      fde_caps.fc_fcntls
> #define       fde_ioctls      fde_caps.fc_ioctls
> #define       fde_nioctls     fde_caps.fc_nioctls
> -#ifdef CAPABILITIES
> -#define      fde_change(fde) ((char *)(fde) + sizeof(seq_t))
> -#define      fde_change_size (sizeof(struct filedescent) - sizeof(seq_t))
> -#else
> -#define      fde_change(fde) ((fde))
> -#define      fde_change_size (sizeof(struct filedescent))
> -#endif
> +#define      fde_change_size (offsetof(struct filedescent, fde_seq))
> 
> /*
>  * This structure is used for the management of descriptors.  It may be
> @@ -97,9 +85,7 @@ struct filedesc {
>       int     fd_holdleaderscount;    /* block fdfree() for shared close() */
>       int     fd_holdleaderswakeup;   /* fdfree() needs wakeup */
> };
> -#ifdef       CAPABILITIES
> #define       fd_seq(fdp, fd) (&(fdp)->fd_ofiles[(fd)].fde_seq)
> -#endif
> 
> /*
>  * Structure to keep track of (process leader, struct fildedesc) tuples.
> 

— 
Bjoern A. Zeeb             "Come on. Learn, goddamn it.", WarGames, 1983

_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to