[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.44L0.0810231421270.2453-100000@iolanthe.rowland.org>
Date: Thu, 23 Oct 2008 14:23:37 -0400 (EDT)
From: Alan Stern <stern@...land.harvard.edu>
To: Manish Lachwani <mlachwani@...il.com>
cc: USB list <linux-usb@...r.kernel.org>,
Kernel development list <linux-kernel@...r.kernel.org>
Subject: Re: oops in file_storage.c
On Thu, 23 Oct 2008, Manish Lachwani wrote:
> Hi Alan,
>
> Yes, I am trying out the changes below. Will let you know how it goes.
> If it works well, I will send an updated patch.
>
> diff --git a/drivers/usb/gadget/file_storage.c
> b/drivers/usb/gadget/file_storage.c
> index 3e807f0..844f992 100644
> --- a/drivers/usb/gadget/file_storage.c
> +++ b/drivers/usb/gadget/file_storage.c
> @@ -1927,26 +1927,11 @@ static int do_write(struct fsg_dev *fsg)
> static int fsync_sub(struct lun *curlun)
> {
> struct file *filp = curlun->filp;
> - struct inode *inode;
> - int rc, err;
>
> if (curlun->ro || !filp)
> return 0;
> - if (!filp->f_op || !filp->f_op->fsync)
> - return -EINVAL;
>
> - inode = filp->f_path.dentry->d_inode;
> - mutex_lock(&inode->i_mutex);
> - rc = filemap_fdatawrite(inode->i_mapping);
> - err = filp->f_op->fsync(filp, filp->f_path.dentry, 1);
> - if (!rc)
> - rc = err;
> - err = filemap_fdatawait(inode->i_mapping);
> - if (!rc)
> - rc = err;
> - mutex_unlock(&inode->i_mutex);
> - VLDBG(curlun, "fdatasync -> %d\n", rc);
> - return rc;
> + return do_fsync(filp, 0);
The fsync call above uses 1, not 0.
> }
>
> static void fsync_all(struct fsg_dev *fsg)
> diff --git a/fs/sync.c b/fs/sync.c
> index e700eb1..53ff1f3 100644
> --- a/fs/sync.c
> +++ b/fs/sync.c
> @@ -111,6 +111,7 @@ long do_fsync(struct file *file, int datasync)
> out:
> return ret;
> }
> +EXPORT_SYMBOL(do_fsync);
>
> static long __do_fsync(unsigned int fd, int datasync)
> {
Apart from that one mistake, this is fine with me. But you should
check with the core kernel developers; there may an objection to
exporting do_fsync().
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists