Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 098107a0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'hotfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
  SUNRPC: Fix a memory leak in rpc_create()
  fix bug - executing FDPIC ELF on NFS mount triggers BUG() at mm/nommu.c:862:/do_mmap_private()
  NFS: initialize flags field in nfs_open_context
  SUNRPC: don't call flush_dcache_page() with an invalid pointer
parents f8e30e44 ed13c27e
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -64,7 +64,11 @@ const struct file_operations nfs_file_operations = {
	.write		= do_sync_write,
	.write		= do_sync_write,
	.aio_read	= nfs_file_read,
	.aio_read	= nfs_file_read,
	.aio_write	= nfs_file_write,
	.aio_write	= nfs_file_write,
#ifdef CONFIG_MMU
	.mmap		= nfs_file_mmap,
	.mmap		= nfs_file_mmap,
#else
	.mmap		= generic_file_mmap,
#endif
	.open		= nfs_file_open,
	.open		= nfs_file_open,
	.flush		= nfs_file_flush,
	.flush		= nfs_file_flush,
	.release	= nfs_file_release,
	.release	= nfs_file_release,
+1 −0
Original line number Original line Diff line number Diff line
@@ -506,6 +506,7 @@ static struct nfs_open_context *alloc_nfs_open_context(struct vfsmount *mnt, str
		ctx->cred = get_rpccred(cred);
		ctx->cred = get_rpccred(cred);
		ctx->state = NULL;
		ctx->state = NULL;
		ctx->lockowner = current->files;
		ctx->lockowner = current->files;
		ctx->flags = 0;
		ctx->error = 0;
		ctx->error = 0;
		ctx->dir_cookie = 0;
		ctx->dir_cookie = 0;
		atomic_set(&ctx->count, 1);
		atomic_set(&ctx->count, 1);
+0 −4
Original line number Original line Diff line number Diff line
@@ -261,10 +261,6 @@ struct rpc_clnt *rpc_create(struct rpc_create_args *args)
	};
	};
	char servername[48];
	char servername[48];


	xprt = xprt_create_transport(&xprtargs);
	if (IS_ERR(xprt))
		return (struct rpc_clnt *)xprt;

	/*
	/*
	 * If the caller chooses not to specify a hostname, whip
	 * If the caller chooses not to specify a hostname, whip
	 * up a string representation of the passed-in address.
	 * up a string representation of the passed-in address.
+6 −3
Original line number Original line Diff line number Diff line
@@ -244,7 +244,7 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len)
	pgto = pages + (pgbase >> PAGE_CACHE_SHIFT);
	pgto = pages + (pgbase >> PAGE_CACHE_SHIFT);
	pgbase &= ~PAGE_CACHE_MASK;
	pgbase &= ~PAGE_CACHE_MASK;


	do {
	for (;;) {
		copy = PAGE_CACHE_SIZE - pgbase;
		copy = PAGE_CACHE_SIZE - pgbase;
		if (copy > len)
		if (copy > len)
			copy = len;
			copy = len;
@@ -253,6 +253,10 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len)
		memcpy(vto + pgbase, p, copy);
		memcpy(vto + pgbase, p, copy);
		kunmap_atomic(vto, KM_USER0);
		kunmap_atomic(vto, KM_USER0);


		len -= copy;
		if (len == 0)
			break;

		pgbase += copy;
		pgbase += copy;
		if (pgbase == PAGE_CACHE_SIZE) {
		if (pgbase == PAGE_CACHE_SIZE) {
			flush_dcache_page(*pgto);
			flush_dcache_page(*pgto);
@@ -260,8 +264,7 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len)
			pgto++;
			pgto++;
		}
		}
		p += copy;
		p += copy;

	}
	} while ((len -= copy) != 0);
	flush_dcache_page(*pgto);
	flush_dcache_page(*pgto);
}
}