Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

CIFS: Don't free volume_info->UNC until we are entirely done with it.

In cleanup_volume_info_contents() we kfree(volume_info->UNC); and then
proceed to use that variable on the very next line.
This causes (at least) Coverity Prevent to complain about use-after-free
of that variable (and I guess other checkers may do that as well).
There's not any /real/ problem here since we are just using the value of
the pointer, not actually dereferencing it, but it's still trivial to
silence the tool, so why not?
To me at least it also just seems nicer to defer freeing the variable
until we are entirely done with it in all respects.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

authored by

Jesper Juhl and committed by
Jiri Kosina
95c75454 bfb9035c

+1 -1
+1 -1
fs/cifs/connect.c
··· 2877 2877 { 2878 2878 kfree(volume_info->username); 2879 2879 kzfree(volume_info->password); 2880 - kfree(volume_info->UNC); 2881 2880 if (volume_info->UNCip != volume_info->UNC + 2) 2882 2881 kfree(volume_info->UNCip); 2882 + kfree(volume_info->UNC); 2883 2883 kfree(volume_info->domainname); 2884 2884 kfree(volume_info->iocharset); 2885 2885 kfree(volume_info->prepath);