cvs commit: VOP_ATTRIB ... and sysutils/fusefs-kmod
Vladimir Grebenschikov
vova at fbsd.ru
Tue Sep 2 06:13:14 UTC 2008
On Thu, 2008-08-28 at 15:23 +0000, Attilio Rao wrote:
> attilio 2008-08-28 15:23:18 UTC
This patch makes CURRENT with Gnome badly crash (just crash while
starting Gnome).
I've found that it is due to ABI change, and tried to rebuild
fusefs-kmod - it just fails due to changed interface.
Patch below fixes problem for me.
(but I still does not completely sure about td = curthread)
Please fix fusefs-kmod port also.
Side question, is there any way to prevent loading of kmod's with broken
ABI ?
> FreeBSD src repository
>
> Modified files:
> share/man/man9 VOP_ATTRIB.9
...
> Log:
> SVN rev 182371 on 2008-08-28 15:23:18Z by attilio
>
> Decontextualize the couplet VOP_GETATTR / VOP_SETATTR as the passed thread
> was always curthread and totally unuseful.
>
> Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com>
--- fuse_module/fuse_vfsops.c.orig 2008-09-02 09:16:27.000000000 +0400
+++ fuse_module/fuse_vfsops.c 2008-09-02 09:16:50.000000000 +0400
@@ -668,7 +668,7 @@
if (vp->v_type == VNON) {
struct vattr va;
- (void)VOP_GETATTR(vp, &va, td->td_ucred, td);
+ (void)VOP_GETATTR(vp, &va, td->td_ucred);
}
*vpp = vp;
#if _DEBUG2G
--- fuse_module/fuse_vnops.c.orig 2008-09-02 09:17:32.000000000 +0400
+++ fuse_module/fuse_vnops.c 2008-09-02 09:21:02.000000000 +0400
@@ -799,7 +799,7 @@
struct vnode *vp = ap->a_vp;
struct vattr *vap = ap->a_vap;
struct ucred *cred = ap->a_cred;
- struct thread *td = ap->a_td;
+ struct thread *td = curthread;
struct fuse_dispatcher fdi;
struct timespec uptsp;
@@ -946,7 +946,7 @@
/* We are to do the check in-kernel */
if (! (facp->facc_flags & FACCESS_VA_VALID)) {
- err = VOP_GETATTR(vp, VTOVA(vp), cred, td);
+ err = VOP_GETATTR(vp, VTOVA(vp), cred);
if (err)
return (err);
facp->facc_flags |= FACCESS_VA_VALID;
@@ -3005,7 +3005,7 @@
struct vattr *vap = ap->a_vap;
struct vnode *vp = ap->a_vp;
struct ucred *cred = ap->a_cred;
- struct thread *td = ap->a_td;
+ struct thread *td = curthread;
int err = 0;
struct fuse_dispatcher fdi;
--- fuse_module/fuse_io.c.orig 2008-09-02 09:21:25.000000000 +0400
+++ fuse_module/fuse_io.c 2008-09-02 09:21:49.000000000 +0400
@@ -157,7 +157,7 @@
goto out;
if (uio->uio_rw == UIO_WRITE && fp->f_flag & O_APPEND) {
- if ((err = VOP_GETATTR(vp, &va, cred, td)))
+ if ((err = VOP_GETATTR(vp, &va, cred)))
goto out;
uio->uio_offset = va.va_size;
} else if ((flags & FOF_OFFSET) == 0)
@@ -823,7 +823,7 @@
#if FUSELIB_CONFORM_BIOREAD
struct vattr va;
- if ((err = VOP_GETATTR(vp, &va, cred, curthread)))
+ if ((err = VOP_GETATTR(vp, &va, cred)))
goto out;
#endif
--
Vladimir B. Grebenschikov
vova at fbsd.ru
More information about the cvs-src
mailing list