]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
add i386 asm constraint fix and cifs fix
authorChris Wright <chrisw@sous-sol.org>
Tue, 20 May 2008 23:21:54 +0000 (16:21 -0700)
committerChris Wright <chrisw@sous-sol.org>
Tue, 20 May 2008 23:21:54 +0000 (16:21 -0700)
queue-2.6.25/cifs-fix-unc-path-prefix-on-queryunixpathinfo-to-have-correct-slash.patch [new file with mode: 0644]
queue-2.6.25/i386-fix-asm-constraint-in-do_irq.patch [new file with mode: 0644]
queue-2.6.25/series

diff --git a/queue-2.6.25/cifs-fix-unc-path-prefix-on-queryunixpathinfo-to-have-correct-slash.patch b/queue-2.6.25/cifs-fix-unc-path-prefix-on-queryunixpathinfo-to-have-correct-slash.patch
new file mode 100644 (file)
index 0000000..e41bc01
--- /dev/null
@@ -0,0 +1,84 @@
+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 */
diff --git a/queue-2.6.25/i386-fix-asm-constraint-in-do_irq.patch b/queue-2.6.25/i386-fix-asm-constraint-in-do_irq.patch
new file mode 100644 (file)
index 0000000..1e12dab
--- /dev/null
@@ -0,0 +1,36 @@
+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
index bd50505ce698d87663d831e01bfbd25f57acef07..2e77835e4b41307c2f08c619bbc2f0cc77fb1ac0 100644 (file)
@@ -13,3 +13,5 @@ usb-fix-build-errors-in-ohci-omap.c-and-ohci-sm501.c.patch
 i2c-nforce2-disable-the-second-smbus-channel-on-the-dfi-lanparty-nf4-expert.patch
 i2c-max6875-really-prevent-24rf08-corruption.patch
 x86-user_regset_view-table-fix-for-ia32-on-64-bit.patch
+i386-fix-asm-constraint-in-do_irq.patch
+cifs-fix-unc-path-prefix-on-queryunixpathinfo-to-have-correct-slash.patch