cifs: fix pointer initialization and checks in cifs_follow_symlink (try #4)
authorJeff Layton <jlayton@redhat.com>
Tue, 19 May 2009 13:57:03 +0000 (09:57 -0400)
committerSteve French <sfrench@us.ibm.com>
Tue, 19 May 2009 15:31:20 +0000 (15:31 +0000)
commit8b6427a2a8f7dd43e9208fb33a3b116d66db4979
tree51b3bcb46a36f3bbc9bfb5ea61cdf600b2233897
parentb41a080fa9f157d223c782ec3571cf46e34e91d6
cifs: fix pointer initialization and checks in cifs_follow_symlink (try #4)

This is the third respin of the patch posted yesterday to fix the error
handling in cifs_follow_symlink. It also includes a fix for a bogus NULL
pointer check in CIFSSMBQueryUnixSymLink that Jeff Moyer spotted.

It's possible for CIFSSMBQueryUnixSymLink to return without setting
target_path to a valid pointer. If that happens then the current value
to which we're initializing this pointer could cause an oops when it's
kfree'd.

This patch is a little more comprehensive than the last patches. It
reorganizes cifs_follow_link a bit for (hopefully) better readability.
It should also eliminate the uneeded allocation of full_path on servers
without unix extensions (assuming they can get to this point anyway, of
which I'm not convinced).

On a side note, I'm not sure I agree with the logic of enabling this
query even when unix extensions are disabled on the client. It seems
like that should disable this as well. But, changing that is outside the
scope of this fix, so I've left it alone for now.

Reported-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Reviewed-by: Christoph Hellwig <hch@inraded.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/cifssmb.c
fs/cifs/link.c