On Tue, Jan 09, 2018 at 11:08:18PM -0600, Benjamin Kaduk wrote:
> So the security update for meltdown/spectre changed the kernel ABI?
> That's kind of unfortunate; usually Ben tries pretty hard to avoid
> doing so.
Yes, it was probably necessary (other postponed fixes requiring new ABI
were added as well).
I managed to create working openafs-modules-dkms by adding attached patch
to openafs source package (works with both jessie and backport versions)...
--
Zdenek Salvet [email protected]
Institute of Computer Science of Masaryk University, Brno, Czech Republic
and CESNET, z.s.p.o., Prague, Czech Republic
Phone: ++420-549 49 6534 Fax: ++420-541 212 747
----------------------------------------------------------------------------
Teamwork is essential -- it allows you to blame someone else.
Index: openafs-1.6.18.2/src/afs/LINUX/osi_file.c
===================================================================
--- openafs-1.6.18.2.orig/src/afs/LINUX/osi_file.c
+++ openafs-1.6.18.2/src/afs/LINUX/osi_file.c
@@ -16,6 +16,8 @@
#include "afsincludes.h" /* Afs-based standard headers */
#include "afs/afs_stats.h" /* afs statistics */
#include <linux/namei.h>
+#include <linux/fs.h>
+#include <linux/version.h>
#if defined(HAVE_LINUX_EXPORTFS_H)
#include <linux/exportfs.h>
@@ -184,7 +186,14 @@ osi_UFSTruncate(struct osi_file *afile,
newattrs.ia_ctime = CURRENT_TIME;
/* avoid notify_change() since it wants to update dentry->d_parent */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,51)
+ {
+ struct dentry *dentry = OSIFILE_DENTRY(afile);
+ code = setattr_prepare(dentry, &newattrs);
+ }
+#else
code = inode_change_ok(inode, &newattrs);
+#endif
if (!code)
code = afs_inode_setattr(afile, &newattrs);
if (!code)
Index: openafs-1.6.18.2/src/afs/LINUX/osi_machdep.h
===================================================================
--- openafs-1.6.18.2.orig/src/afs/LINUX/osi_machdep.h
+++ openafs-1.6.18.2/src/afs/LINUX/osi_machdep.h
@@ -292,6 +292,7 @@ struct uio {
#define FILE_INODE(F) (F)->f_dentry->d_inode
#define OSIFILE_INODE(a) FILE_INODE((a)->filp)
+#define OSIFILE_DENTRY(a) ((a)->filp)->f_dentry
#if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)
# define NEED_IOCTL32