Re: smbfs problem

From: Urban Widmark (urban@svenskatest.se)
Date: Fri Jul 28 2000 - 12:13:16 EST


On Fri, 28 Jul 2000, Gabor Lenart wrote:

> and on console I saw: out from virtual handles (or files ? I do not
> remember). In log files:

Can you find the exact message?

> Jul 28 16:43:08 galaxy kernel: smb_create: q-and-a-fetch-msg.tcl?msg_id=000tGm&topic_id=21&topic=web/db failed, error=-2
> Jul 28 16:43:09 galaxy kernel: smb_create: q-and-a-fetch-msg.tcl?msg_id=000tEB&topic_id=21&topic=web/db failed, error=-2

Doing

mkdir q-and-a-fetch-msg.tcl\?msg_id=00sPP\&topic_id=21\&topic=web

on a smbfs mount from samba 2.0.7 creates the directory on the server but
it returns this name to smbfs and smbclient:
  Q-AND~JE.TCL

And the same if creating the file on the samba server. I think this is
about allowed characters in filenames and not being able to create the
file db in the directories with the funny names.

> Jul 28 16:45:00 galaxy kernel: smb_setup_header: Aieee, xmit len > packet! len=8204, size=8192
> Jul 28 16:45:00 galaxy kernel: smb_setup_header: Aieee, xmit len > packet! len=8204, size=8192
> Jul 28 16:45:00 galaxy kernel: smb_setup_header: Aieee, xmit len > packet! len=8212, size=8192
>
> The later message repeated 2861 times ...

A little too verbose perhaps ...

There are 2 callers of smb_setup_header, one of those doesn't care about
what size the "packet" is (packet is a buffer of at least one page, and
one page is large enough). If it was the caller that cares about this size
I think it should have oopsed (unless you are unlucky enough to have an
innocent page in that area that it wrote to).

If you can reproduce the problem (try before applying the patch) please
try the (untested) patch below. If it isn't a harmless message this should
catch it and the harmless message should go away.

If you can't test this maybe you could give a more detailed description of
what you were doing. Did you do all of that in mc? Did you download to the
smbfs share too? Was it one tarball or many (which ones?) ...

/Urban

diff -ur --exclude-from=exclude linux-2.2.16-orig/fs/smbfs/proc.c linux/fs/smbfs/proc.c
--- linux-2.2.16-orig/fs/smbfs/proc.c Fri Jul 21 13:17:56 2000
+++ linux/fs/smbfs/proc.c Fri Jul 28 18:57:52 2000
@@ -685,10 +685,6 @@
         __u8 *p = server->packet;
         __u8 *buf = server->packet;
 
-if (xmit_len > server->packet_size)
-printk(KERN_DEBUG "smb_setup_header: Aieee, xmit len > packet! len=%d, size=%d\n",
-xmit_len, server->packet_size);
-
         p = smb_encode_smb_length(p, xmit_len - 4);
 
         *p++ = 0xff;
@@ -1046,12 +1042,22 @@
 
         *p++ = 1;
         WSET(p, 0, count);
+
+ result = -EINVAL;
+ if (p+2+count > server->packet + server->packet_size) {
+ printk(KERN_ERR "smb_proc_write: outside packet buffer "
+ "file %s/%s, data=%d@%p, packet=%d@%p\n",
+ DENTRY_PATH(dentry), count, p,
+ server->packet_size, server->packet);
+ goto out;
+ }
         memcpy(p+2, data, count);
 
         result = smb_request_ok(server, SMBwrite, 1, 0);
         if (result >= 0)
                 result = WVAL(server->packet, smb_vwv0);
 
+out:
         smb_unlock_server(server);
         return result;
 }

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jul 31 2000 - 21:00:27 EST