Thank you for your quick reply stevea! I still consider myself a begginer linux user even though I've experimented with a couple of distros for the last 3 years or so now. Please forgive my ignorance.
Originally Posted by
stevea
The dcache_lock symbol was removed from the kernel at 2.6.38, so you need a newer version of the module source.
I've searched high and low for a newer version of the source for the real-time protection module from Kaspersky and I haven't found anything. I would also figure that since I'm downloading the AV protection from the Kaspersky site that the code would be as new and updated as it can get but I may be wrong about that.
From: /opt/kaspersky/kes4lwks/src/kernel/redirfs/rfs_dcache.c
Code:
/*
* RedirFS: Redirecting File System
* Written by Frantisek Hrbata <frantisek.hrbata@redirfs.org>
*
* Copyright 2008 - 2010 Frantisek Hrbata
* All rights reserved.
*
* This file is part of RedirFS.
*
* RedirFS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* RedirFS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with RedirFS. If not, see <http://www.gnu.org/licenses/>.
*
* 2010-08-20 Changes made by Vasiliy Novikov:
* - rfs_dcache_get_subs function modified;
* - rfs_dcache_get_subs_atomic function removed;
* - rfs_dcache_entry_alloc_locked function removed.
*/
Originally Posted by
stevea
You might be able to figure out whihch kind of lock to replace it with ....
from .../fs/dcache.c
I don't think there is a dcache.c on my system, could this be the problem?
Code:
$ locate dcache
/opt/kaspersky/kes4lwks/src/kernel/redirfs/rfs_dcache.c
/usr/share/system-config-printer/ppdcache.py
/usr/share/system-config-printer/ppdcache.pyc
/usr/share/system-config-printer/ppdcache.pyo
/usr/src/kernels/3.3.0-4.fc16.i686/include/linux/dcache.h
I started thinking after pursuing your suggestions of where and what to look for that maybe the problem is in the installation script for the module? I was also beginning to think that the next step might be to contact the Kaspersky support folks and see what their answer is. Still in search of the solution but not in any hurry because the software still works without the real-time protection module, I just have to handle everything manually. Cheers!
Alright, I think I figured out what the problem is. Any of you expert coders out there that know more than I do please correct me if I am wrong about this!
Code:
/opt/kaspersky/kes4lwks/src/kernel/redirfs/rfs_path.c: In function ‘redirfs_get_filename’:
/opt/kaspersky/kes4lwks/src/kernel/redirfs/rfs_path.c:664:13: error: ‘dcache_lock’ undeclared (first use in this function)
/opt/kaspersky/kes4lwks/src/kernel/redirfs/rfs_path.c:664:13: note: each undeclared identifier is reported only once for each function it appears in
This is a piece of the compilation error that I overlooked earlier, which says to me, with my little bit of programming knowledge is that the code is essentially incomplete. I recognized this error from similar errors I would occassionally get when I was doing some programming in college and would forget to declare a variable as whatever type I needed it to be.
Here is the code from the function in that program:
Code:
int redirfs_get_filename(struct vfsmount *mnt, struct dentry *dentry, char *buf,
int size)
{
struct dentry *dtmp = NULL;
struct dentry *dmnt = NULL;
struct vfsmount *mtmp = NULL;
struct vfsmount *mmnt = NULL;
char *end;
int len;
end = buf + size;
len = size;
if (size < 2)
return -ENAMETOOLONG;
*--end = '\0';
size--;
again:
spin_lock(&dcache_lock);
while (dentry != mnt->mnt_root) {
size -= dentry->d_name.len + 1; /* dentry name + slash */
if (size < 0) {
spin_unlock(&dcache_lock);
return -ENAMETOOLONG;
}
end -= dentry->d_name.len;
memcpy(end, dentry->d_name.name, dentry->d_name.len);
*--end = '/';
dentry = dentry->d_parent;
}
dtmp = dmnt;
mtmp = mmnt;
dmnt = dget(dentry);
mmnt = mntget(mnt);
spin_unlock(&dcache_lock);
dput(dtmp);
mntput(mtmp);
if (rfs_follow_up(&mmnt, &dmnt)) {
dentry = dmnt;
mnt = mmnt;
goto again;
}
dput(dmnt);
mntput(mmnt);
if (*end != '/') {
*--end = '/';
size--;
}
memmove(buf, end, len - size);
return 0;
}