Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 769cb858 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-next' of git://git.samba.org/sfrench/cifs-2.6

Pull CIFS fixes from Steve French:
 "Misc small cifs fixes"

* 'for-next' of git://git.samba.org/sfrench/cifs-2.6:
  cifs: eliminate cifsERROR variable
  cifs: don't compare uniqueids in cifs_prime_dcache unless server inode numbers are in use
  cifs: fix double-free of "string" in cifs_parse_mount_options
parents b49249d1 9acbd26b
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ void dump_smb(void *, int);
#define CIFS_TIMER	0x04

extern int cifsFYI;
extern int cifsERROR;

/*
 *	debug ON
@@ -64,10 +63,7 @@ do { \

/* error event message: e.g., i/o error */
#define cifserror(fmt, ...)						\
do {									\
	if (cifsERROR)							\
	printk(KERN_ERR "CIFS VFS: " fmt "\n", ##__VA_ARGS__);		\
} while (0)

#define cERROR(set, fmt, ...)						\
do {									\
+0 −1
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@
#endif

int cifsFYI = 0;
int cifsERROR = 1;
int traceSMB = 0;
bool enable_oplocks = true;
unsigned int linuxExtEnabled = 1;
+2 −7
Original line number Diff line number Diff line
@@ -1624,14 +1624,11 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
		case Opt_unc:
			string = vol->UNC;
			vol->UNC = match_strdup(args);
			if (vol->UNC == NULL) {
				kfree(string);
			if (vol->UNC == NULL)
				goto out_nomem;
			}

			convert_delimiter(vol->UNC, '\\');
			if (vol->UNC[0] != '\\' || vol->UNC[1] != '\\') {
				kfree(string);
				printk(KERN_ERR "CIFS: UNC Path does not "
						"begin with // or \\\\\n");
				goto cifs_parse_mount_err;
@@ -1687,10 +1684,8 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,

			string = vol->prepath;
			vol->prepath = match_strdup(args);
			if (vol->prepath == NULL) {
				kfree(string);
			if (vol->prepath == NULL)
				goto out_nomem;
			}
			/* Compare old prefixpath= option to new one */
			if (!string || strcmp(string, vol->prepath))
				printk(KERN_WARNING "CIFS: the value of the "
+15 −4
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ cifs_prime_dcache(struct dentry *parent, struct qstr *name,
	struct dentry *dentry, *alias;
	struct inode *inode;
	struct super_block *sb = parent->d_inode->i_sb;
	struct cifs_sb_info *cifs_sb = CIFS_SB(sb);

	cFYI(1, "%s: for %s", __func__, name->name);

@@ -91,11 +92,21 @@ cifs_prime_dcache(struct dentry *parent, struct qstr *name,
		int err;

		inode = dentry->d_inode;
		if (inode) {
			/*
			 * If we're generating inode numbers, then we don't
			 * want to clobber the existing one with the one that
			 * the readdir code created.
			 */
			if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM))
				fattr->cf_uniqueid = CIFS_I(inode)->uniqueid;

			/* update inode in place if i_ino didn't change */
		if (inode && CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) {
			if (CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) {
				cifs_fattr_to_inode(inode, fattr);
				goto out;
			}
		}
		err = d_invalidate(dentry);
		dput(dentry);
		if (err)