From aaditya.kumar.30@gmail.com Fri Dec 21 15:46:49 2012
From: Aaditya Kumar <aaditya.kumar.30@gmail.com>
Date: Sat, 22 Dec 2012 05:16:48 +0530
Subject: AXFS: fix build failure due to undefined symbol axfs_xip_record()
To: Greg KH <gregkh@linuxfoundation.org>
Cc: ltsi-dev@lists.linuxfoundation.org, tim.bird@am.sony.com,  frank.rowand@am.sony.com, takuzo.ohara@ap.sony.com, amit.agarwal@ap.sony.com,  kan.iibuchi@jp.sony.com, Aaditya Kumar <aaditya.kumar@ap.sony.com>
Message-ID: <CAEtiSavV8fDKpY+5krVPqoMwGwB6C20rLa5Cz-gqWqJj2+rryA@mail.gmail.com>
Status: RO
X-Status: A
Content-Length: 1955
Lines: 72


This patch fixes following build failure when axfs is compiled
as a module. The build failure is caused by
Commit-ID: a7e526129f6ea298513ef4ce7aa6db08fc069d14

ERROR: "axfs_xip_record" [fs/axfs/axfs.ko] undefined!

Signed-off-by: Aaditya Kumar <aaditya.kumar@ap.sony.com>


---
 fs/axfs/Makefile           |    3 +--
 fs/axfs/axfs.h             |    2 ++
 fs/axfs/axfs_super.c       |    4 +++-
 fs/axfs/axfs_xip_profile.c |    9 ++++++---
 4 files changed, 12 insertions(+), 6 deletions(-)

--- a/fs/axfs/Makefile
+++ b/fs/axfs/Makefile
@@ -5,6 +5,5 @@
 obj-$(CONFIG_AXFS) += axfs.o
 
 axfs-y := axfs_inode.o axfs_super.o axfs_uncompress.o axfs_profiling.o \
-          axfs_uml.o axfs_mtd.o axfs_bdev.o axfs_physmem.o
+          axfs_uml.o axfs_mtd.o axfs_bdev.o axfs_physmem.o axfs_xip_profile.o
 
-obj-$(CONFIG_AXFS_DEBUG) += axfs_xip_profile.o
--- a/fs/axfs/axfs.h
+++ b/fs/axfs/axfs.h
@@ -93,4 +93,6 @@ void axfs_map_physmem(struct axfs_super
 void axfs_unmap_physmem(struct super_block *);
 #endif
 
+/* axfs_xip_profile.c */
+extern int __init axfs_xip_proc_profile(void);
 #endif
--- a/fs/axfs/axfs_super.c
+++ b/fs/axfs/axfs_super.c
@@ -975,8 +975,10 @@ static int __init init_axfs_fs(void)
 
 	err = register_filesystem(&axfs_fs_type);
 
-	if (!err)
+	if (!err) {
+		axfs_xip_proc_profile();
 		return 0;
+	}
 
 	axfs_uncompress_exit();
 	return err;
--- a/fs/axfs/axfs_xip_profile.c
+++ b/fs/axfs/axfs_xip_profile.c
@@ -137,7 +137,7 @@ static int axfs_xip_proc_write(struct fi
 	return count;
 }
 
-static int __init axfs_xip_proc_profile(void)
+int __init axfs_xip_proc_profile(void)
 {
 	struct proc_dir_entry *ent;
 	ent = create_proc_entry("axfs_xip", S_IFREG|S_IRUGO|S_IWUSR, NULL);
@@ -149,6 +149,9 @@ static int __init axfs_xip_proc_profile(
 	ent->write_proc = axfs_xip_proc_write;
 	return 0;
 }
-late_initcall(axfs_xip_proc_profile);
-
+#else
+int __init axfs_xip_proc_profile(void)
+{
+	return 0;
+}
 #endif /* CONFIG_AXFS_DEBUG */
