--- /dev/null
+From stable-bounces@linux.kernel.org Tue May 20 16:17:21 2008
+Message-ID: <48334EFD.30406@redhat.com>
+Date: Tue, 20 May 2008 18:21:49 -0400
+From: Chuck Ebbert <cebbert@redhat.com>
+To: linux-stable <stable@kernel.org>
+Cc: Steve French <smfrench@gmail.com>
+Subject: CIFS: Fix UNC path prefix on QueryUnixPathInfo to have correct slash
+
+From: Steve French <sfrench@us.ibm.com>
+
+upstream commit: 076d8423a98659a92837b07aa494cb74bfefe77c
+
+
+When a share was in DFS and the server was Unix/Linux, we were sending paths of the form
+ \\server\share/dir/file
+rather than
+ //server/share/dir/file
+
+There was some discussion between me and jra over whether we should use
+ /server/share/dir/file
+as MS sometimes says - but the documentation for this claims it should be
+doubleslash for this type of UNC-like path format and that works, so leaving
+it as doubleslash but converting the \ to / in the the //server/share portion.
+
+This gets Samba to now correctly return STATUS_PATH_NOT_COVERED when it is
+supposed to (Windows already did since the direction of the slash was not an issue
+for them). Still need another minor change to fully enable DFS (need to finish
+some chages to SMBGetDFSRefer
+
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ fs/cifs/inode.c | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+--- a/fs/cifs/inode.c
++++ b/fs/cifs/inode.c
+@@ -161,12 +161,14 @@ static void cifs_unix_info_to_inode(stru
+ spin_unlock(&inode->i_lock);
+ }
+
+-static const unsigned char *cifs_get_search_path(struct cifsTconInfo *pTcon,
+- const char *search_path)
++static const unsigned char *cifs_get_search_path(struct cifs_sb_info *cifs_sb,
++ const char *search_path)
+ {
+ int tree_len;
+ int path_len;
++ int i;
+ char *tmp_path;
++ struct cifsTconInfo *pTcon = cifs_sb->tcon;
+
+ if (!(pTcon->Flags & SMB_SHARE_IS_IN_DFS))
+ return search_path;
+@@ -180,6 +182,11 @@ static const unsigned char *cifs_get_sea
+ return search_path;
+
+ strncpy(tmp_path, pTcon->treeName, tree_len);
++ if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)
++ for (i = 0; i < tree_len; i++) {
++ if (tmp_path[i] == '\\')
++ tmp_path[i] = '/';
++ }
+ strncpy(tmp_path+tree_len, search_path, path_len);
+ tmp_path[tree_len+path_len] = 0;
+ return tmp_path;
+@@ -199,7 +206,7 @@ int cifs_get_inode_info_unix(struct inod
+ pTcon = cifs_sb->tcon;
+ cFYI(1, ("Getting info on %s", search_path));
+
+- full_path = cifs_get_search_path(pTcon, search_path);
++ full_path = cifs_get_search_path(cifs_sb, search_path);
+
+ try_again_CIFSSMBUnixQPathInfo:
+ /* could have done a find first instead but this returns more info */
+@@ -402,7 +409,7 @@ int cifs_get_inode_info(struct inode **p
+ return -ENOMEM;
+ pfindData = (FILE_ALL_INFO *)buf;
+
+- full_path = cifs_get_search_path(pTcon, search_path);
++ full_path = cifs_get_search_path(cifs_sb, search_path);
+
+ try_again_CIFSSMBQPathInfo:
+ /* could do find first instead but this returns more info */
--- /dev/null
+From stable-bounces@linux.kernel.org Tue May 20 16:16:02 2008
+Message-ID: <48334E90.2000901@redhat.com>
+Date: Tue, 20 May 2008 18:20:00 -0400
+From: Chuck Ebbert <cebbert@redhat.com>
+To: linux-stable <stable@kernel.org>
+Cc: Jan Beulich <jbeulich@novell.com>
+Subject: i386: fix asm constraint in do_IRQ()
+
+From: Jan Beulich <jbeulich@novell.com>
+
+upstream commit: 5065dbafc299507f16731434e95b91dadff03006
+
+i386: fix asm constraint in do_IRQ()
+
+Two prior changes resulted in the "ecx" clobber being lost.
+
+Signed-off-by: Jan Beulich <jbeulich@novell.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+---
+ arch/x86/kernel/irq_32.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/kernel/irq_32.c
++++ b/arch/x86/kernel/irq_32.c
+@@ -134,7 +134,7 @@ unsigned int do_IRQ(struct pt_regs *regs
+ : "=a" (arg1), "=d" (arg2), "=b" (bx)
+ : "0" (irq), "1" (desc), "2" (isp),
+ "D" (desc->handle_irq)
+- : "memory", "cc"
++ : "memory", "cc", "ecx"
+ );
+ } else
+ #endif