rpms/gfs2-utils/F-9 kernel-2.6.26_1.diff, NONE, 1.1 kernel-2.6.26_2.diff, NONE, 1.1 .cvsignore, 1.16, 1.17 gfs2-utils.spec, 1.26, 1.27 sources, 1.17, 1.18 kernel-2.6.25.diff, 1.1, NONE userland-2.6.26.diff, 1.1, NONE
Fabio M. Di Nitto
fabbione at fedoraproject.org
Tue Oct 21 06:20:12 UTC 2008
- Previous message (by thread): rpms/libusb/devel libusb.spec,1.44,1.45
- Next message (by thread): rpms/rgmanager/F-9 kernel-2.6.26_1.diff, NONE, 1.1 kernel-2.6.26_2.diff, NONE, 1.1 .cvsignore, 1.18, 1.19 rgmanager.spec, 1.48, 1.49 sources, 1.27, 1.28 kernel-2.6.25.diff, 1.1, NONE userland-2.6.26.diff, 1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: fabbione
Update of /cvs/pkgs/rpms/gfs2-utils/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv27231
Modified Files:
.cvsignore gfs2-utils.spec sources
Added Files:
kernel-2.6.26_1.diff kernel-2.6.26_2.diff
Removed Files:
kernel-2.6.25.diff userland-2.6.26.diff
Log Message:
New upstream release. Fixes CVE-2008-4192 and CVE-2008-4579
kernel-2.6.26_1.diff:
--- NEW FILE kernel-2.6.26_1.diff ---
812f002364f33eb634f24cb2c5205570dc23cd04
diff --git a/gfs-kernel/src/gfs/lock_dlm_plock.c b/gfs-kernel/src/gfs/lock_dlm_plock.c
new file mode 100644
index 0000000..d6d6e37
--- /dev/null
+++ b/gfs-kernel/src/gfs/lock_dlm_plock.c
@@ -0,0 +1,439 @@
+/*
+ * Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU General Public License version 2.
+ */
+
+#include <linux/fs.h>
+#include <linux/miscdevice.h>
+#include <linux/poll.h>
+#include <linux/dlm.h>
+#include <linux/dlm_plock.h>
+
+#include "dlm_internal.h"
+#include "lockspace.h"
+
+static spinlock_t ops_lock;
+static struct list_head send_list;
+static struct list_head recv_list;
+static wait_queue_head_t send_wq;
+static wait_queue_head_t recv_wq;
+
+struct plock_op {
+ struct list_head list;
+ int done;
+ struct dlm_plock_info info;
+};
+
+struct plock_xop {
+ struct plock_op xop;
+ void *callback;
+ void *fl;
+ void *file;
+ struct file_lock flc;
+};
+
+
+static inline void set_version(struct dlm_plock_info *info)
+{
+ info->version[0] = DLM_PLOCK_VERSION_MAJOR;
+ info->version[1] = DLM_PLOCK_VERSION_MINOR;
+ info->version[2] = DLM_PLOCK_VERSION_PATCH;
+}
+
+static int check_version(struct dlm_plock_info *info)
+{
+ if ((DLM_PLOCK_VERSION_MAJOR != info->version[0]) ||
+ (DLM_PLOCK_VERSION_MINOR < info->version[1])) {
+ log_print("plock device version mismatch: "
+ "kernel (%u.%u.%u), user (%u.%u.%u)",
+ DLM_PLOCK_VERSION_MAJOR,
+ DLM_PLOCK_VERSION_MINOR,
+ DLM_PLOCK_VERSION_PATCH,
+ info->version[0],
+ info->version[1],
+ info->version[2]);
+ return -EINVAL;
+ }
+ return 0;
+}
+
+static void send_op(struct plock_op *op)
+{
+ set_version(&op->info);
+ INIT_LIST_HEAD(&op->list);
+ spin_lock(&ops_lock);
+ list_add_tail(&op->list, &send_list);
+ spin_unlock(&ops_lock);
+ wake_up(&send_wq);
+}
+
+int dlm_posix_lock(dlm_lockspace_t *lockspace, u64 number, struct file *file,
+ int cmd, struct file_lock *fl)
+{
+ struct dlm_ls *ls;
+ struct plock_op *op;
+ struct plock_xop *xop;
+ int rv;
+
+ ls = dlm_find_lockspace_local(lockspace);
+ if (!ls)
+ return -EINVAL;
+
+ xop = kzalloc(sizeof(*xop), GFP_KERNEL);
+ if (!xop) {
+ rv = -ENOMEM;
+ goto out;
+ }
+
+ op = &xop->xop;
+ op->info.optype = DLM_PLOCK_OP_LOCK;
+ op->info.pid = fl->fl_pid;
+ op->info.ex = (fl->fl_type == F_WRLCK);
+ op->info.wait = IS_SETLKW(cmd);
+ op->info.fsid = ls->ls_global_id;
+ op->info.number = number;
+ op->info.start = fl->fl_start;
+ op->info.end = fl->fl_end;
+ if (fl->fl_lmops && fl->fl_lmops->fl_grant) {
+ /* fl_owner is lockd which doesn't distinguish
+ processes on the nfs client */
+ op->info.owner = (__u64) fl->fl_pid;
+ xop->callback = fl->fl_lmops->fl_grant;
+ locks_init_lock(&xop->flc);
+ locks_copy_lock(&xop->flc, fl);
+ xop->fl = fl;
+ xop->file = file;
+ } else {
+ op->info.owner = (__u64)(long) fl->fl_owner;
+ xop->callback = NULL;
+ }
+
+ send_op(op);
+
+ if (xop->callback == NULL)
+ wait_event(recv_wq, (op->done != 0));
+ else {
+ rv = -EINPROGRESS;
+ goto out;
+ }
+
+ spin_lock(&ops_lock);
+ if (!list_empty(&op->list)) {
+ log_error(ls, "dlm_posix_lock: op on list %llx",
+ (unsigned long long)number);
+ list_del(&op->list);
+ }
+ spin_unlock(&ops_lock);
+
+ rv = op->info.rv;
+
+ if (!rv) {
+ if (posix_lock_file_wait(file, fl) < 0)
+ log_error(ls, "dlm_posix_lock: vfs lock error %llx",
+ (unsigned long long)number);
+ }
+
+ kfree(xop);
+out:
+ dlm_put_lockspace(ls);
+ return rv;
+}
+EXPORT_SYMBOL_GPL(dlm_posix_lock);
+
+/* Returns failure iff a succesful lock operation should be canceled */
+static int dlm_plock_callback(struct plock_op *op)
+{
+ struct file *file;
+ struct file_lock *fl;
+ struct file_lock *flc;
+ int (*notify)(void *, void *, int) = NULL;
+ struct plock_xop *xop = (struct plock_xop *)op;
+ int rv = 0;
+
+ spin_lock(&ops_lock);
+ if (!list_empty(&op->list)) {
+ log_print("dlm_plock_callback: op on list %llx",
+ (unsigned long long)op->info.number);
+ list_del(&op->list);
+ }
+ spin_unlock(&ops_lock);
+
+ /* check if the following 2 are still valid or make a copy */
+ file = xop->file;
+ flc = &xop->flc;
+ fl = xop->fl;
+ notify = xop->callback;
+
+ if (op->info.rv) {
+ notify(flc, NULL, op->info.rv);
+ goto out;
+ }
+
+ /* got fs lock; bookkeep locally as well: */
+ flc->fl_flags &= ~FL_SLEEP;
+ if (posix_lock_file(file, flc, NULL)) {
+ /*
+ * This can only happen in the case of kmalloc() failure.
+ * The filesystem's own lock is the authoritative lock,
+ * so a failure to get the lock locally is not a disaster.
+ * As long as the fs cannot reliably cancel locks (especially
+ * in a low-memory situation), we're better off ignoring
+ * this failure than trying to recover.
+ */
+ log_print("dlm_plock_callback: vfs lock error %llx file %p fl %p",
+ (unsigned long long)op->info.number, file, fl);
+ }
+
+ rv = notify(flc, NULL, 0);
+ if (rv) {
+ /* XXX: We need to cancel the fs lock here: */
+ log_print("dlm_plock_callback: lock granted after lock request "
+ "failed; dangling lock!\n");
+ goto out;
+ }
+
+out:
+ kfree(xop);
+ return rv;
+}
+
+int dlm_posix_unlock(dlm_lockspace_t *lockspace, u64 number, struct file *file,
+ struct file_lock *fl)
+{
+ struct dlm_ls *ls;
+ struct plock_op *op;
+ int rv;
+
+ ls = dlm_find_lockspace_local(lockspace);
+ if (!ls)
+ return -EINVAL;
+
+ op = kzalloc(sizeof(*op), GFP_KERNEL);
+ if (!op) {
+ rv = -ENOMEM;
+ goto out;
+ }
+
+ if (posix_lock_file_wait(file, fl) < 0)
+ log_error(ls, "dlm_posix_unlock: vfs unlock error %llx",
+ (unsigned long long)number);
+
+ op->info.optype = DLM_PLOCK_OP_UNLOCK;
+ op->info.pid = fl->fl_pid;
+ op->info.fsid = ls->ls_global_id;
+ op->info.number = number;
+ op->info.start = fl->fl_start;
+ op->info.end = fl->fl_end;
+ if (fl->fl_lmops && fl->fl_lmops->fl_grant)
+ op->info.owner = (__u64) fl->fl_pid;
+ else
+ op->info.owner = (__u64)(long) fl->fl_owner;
+
+ send_op(op);
+ wait_event(recv_wq, (op->done != 0));
+
+ spin_lock(&ops_lock);
+ if (!list_empty(&op->list)) {
+ log_error(ls, "dlm_posix_unlock: op on list %llx",
+ (unsigned long long)number);
+ list_del(&op->list);
+ }
+ spin_unlock(&ops_lock);
+
+ rv = op->info.rv;
+
+ if (rv == -ENOENT)
+ rv = 0;
+
+ kfree(op);
+out:
+ dlm_put_lockspace(ls);
+ return rv;
+}
+EXPORT_SYMBOL_GPL(dlm_posix_unlock);
+
+int dlm_posix_get(dlm_lockspace_t *lockspace, u64 number, struct file *file,
+ struct file_lock *fl)
+{
+ struct dlm_ls *ls;
+ struct plock_op *op;
+ int rv;
+
+ ls = dlm_find_lockspace_local(lockspace);
+ if (!ls)
+ return -EINVAL;
+
+ op = kzalloc(sizeof(*op), GFP_KERNEL);
+ if (!op) {
+ rv = -ENOMEM;
+ goto out;
+ }
+
+ op->info.optype = DLM_PLOCK_OP_GET;
+ op->info.pid = fl->fl_pid;
+ op->info.ex = (fl->fl_type == F_WRLCK);
+ op->info.fsid = ls->ls_global_id;
+ op->info.number = number;
+ op->info.start = fl->fl_start;
+ op->info.end = fl->fl_end;
+ if (fl->fl_lmops && fl->fl_lmops->fl_grant)
+ op->info.owner = (__u64) fl->fl_pid;
+ else
+ op->info.owner = (__u64)(long) fl->fl_owner;
+
+ send_op(op);
+ wait_event(recv_wq, (op->done != 0));
+
+ spin_lock(&ops_lock);
+ if (!list_empty(&op->list)) {
+ log_error(ls, "dlm_posix_get: op on list %llx",
+ (unsigned long long)number);
+ list_del(&op->list);
+ }
+ spin_unlock(&ops_lock);
+
+ /* info.rv from userspace is 1 for conflict, 0 for no-conflict,
+ -ENOENT if there are no locks on the file */
+
+ rv = op->info.rv;
+
+ fl->fl_type = F_UNLCK;
+ if (rv == -ENOENT)
+ rv = 0;
+ else if (rv > 0) {
+ fl->fl_type = (op->info.ex) ? F_WRLCK : F_RDLCK;
+ fl->fl_pid = op->info.pid;
+ fl->fl_start = op->info.start;
+ fl->fl_end = op->info.end;
+ rv = 0;
+ }
+
+ kfree(op);
+out:
+ dlm_put_lockspace(ls);
+ return rv;
+}
+EXPORT_SYMBOL_GPL(dlm_posix_get);
+
+/* a read copies out one plock request from the send list */
+static ssize_t dev_read(struct file *file, char __user *u, size_t count,
+ loff_t *ppos)
+{
+ struct dlm_plock_info info;
+ struct plock_op *op = NULL;
+
+ if (count < sizeof(info))
+ return -EINVAL;
+
+ spin_lock(&ops_lock);
+ if (!list_empty(&send_list)) {
+ op = list_entry(send_list.next, struct plock_op, list);
+ list_move(&op->list, &recv_list);
+ memcpy(&info, &op->info, sizeof(info));
+ }
+ spin_unlock(&ops_lock);
+
+ if (!op)
+ return -EAGAIN;
+
+ if (copy_to_user(u, &info, sizeof(info)))
+ return -EFAULT;
+ return sizeof(info);
+}
+
+/* a write copies in one plock result that should match a plock_op
+ on the recv list */
+static ssize_t dev_write(struct file *file, const char __user *u, size_t count,
+ loff_t *ppos)
+{
+ struct dlm_plock_info info;
+ struct plock_op *op;
+ int found = 0;
+
+ if (count != sizeof(info))
+ return -EINVAL;
+
+ if (copy_from_user(&info, u, sizeof(info)))
+ return -EFAULT;
+
+ if (check_version(&info))
+ return -EINVAL;
+
+ spin_lock(&ops_lock);
+ list_for_each_entry(op, &recv_list, list) {
+ if (op->info.fsid == info.fsid && op->info.number == info.number &&
+ op->info.owner == info.owner) {
+ list_del_init(&op->list);
+ found = 1;
+ op->done = 1;
+ memcpy(&op->info, &info, sizeof(info));
+ break;
+ }
+ }
+ spin_unlock(&ops_lock);
+
+ if (found) {
+ struct plock_xop *xop;
+ xop = (struct plock_xop *)op;
+ if (xop->callback)
+ count = dlm_plock_callback(op);
+ else
+ wake_up(&recv_wq);
+ } else
+ log_print("dev_write no op %x %llx", info.fsid,
+ (unsigned long long)info.number);
+ return count;
+}
+
+static unsigned int dev_poll(struct file *file, poll_table *wait)
+{
+ unsigned int mask = 0;
+
+ poll_wait(file, &send_wq, wait);
+
+ spin_lock(&ops_lock);
+ if (!list_empty(&send_list))
+ mask = POLLIN | POLLRDNORM;
+ spin_unlock(&ops_lock);
+
+ return mask;
+}
+
+static const struct file_operations dev_fops = {
+ .read = dev_read,
+ .write = dev_write,
+ .poll = dev_poll,
+ .owner = THIS_MODULE
+};
+
+static struct miscdevice plock_dev_misc = {
+ .minor = MISC_DYNAMIC_MINOR,
+ .name = DLM_PLOCK_MISC_NAME,
+ .fops = &dev_fops
+};
+
+int dlm_plock_init(void)
+{
+ int rv;
+
+ spin_lock_init(&ops_lock);
+ INIT_LIST_HEAD(&send_list);
+ INIT_LIST_HEAD(&recv_list);
+ init_waitqueue_head(&send_wq);
+ init_waitqueue_head(&recv_wq);
+
+ rv = misc_register(&plock_dev_misc);
+ if (rv)
+ log_print("dlm_plock_init: misc_register failed %d", rv);
+ return rv;
+}
+
+void dlm_plock_exit(void)
+{
+ if (misc_deregister(&plock_dev_misc) < 0)
+ log_print("dlm_plock_exit: misc_deregister failed");
+}
+
kernel-2.6.26_2.diff:
--- NEW FILE kernel-2.6.26_2.diff ---
ff7d89bfe60ed041d9342c8c9d91815c1f3d3bef
diff --git a/gfs-kernel/src/gfs/Makefile b/gfs-kernel/src/gfs/Makefile
index aa12e01..19f3b4f 100644
--- a/gfs-kernel/src/gfs/Makefile
+++ b/gfs-kernel/src/gfs/Makefile
@@ -32,13 +32,6 @@ gfs-objs := acl.o \
inode.o \
ioctl.o \
lm.o \
- locking.o \
- lock_nolock_main.o \
- lock_dlm_lock.o \
- lock_dlm_main.o \
- lock_dlm_mount.o \
- lock_dlm_sysfs.o \
- lock_dlm_thread.o \
log.o \
lops.o \
lvb.o \
diff --git a/gfs-kernel/src/gfs/acl.c b/gfs-kernel/src/gfs/acl.c
index a3e30b0..63cf1cd 100644
--- a/gfs-kernel/src/gfs/acl.c
+++ b/gfs-kernel/src/gfs/acl.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/posix_acl.h>
diff --git a/gfs-kernel/src/gfs/bits.c b/gfs-kernel/src/gfs/bits.c
index af84bf0..4265db8 100644
--- a/gfs-kernel/src/gfs/bits.c
+++ b/gfs-kernel/src/gfs/bits.c
@@ -11,7 +11,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
diff --git a/gfs-kernel/src/gfs/bmap.c b/gfs-kernel/src/gfs/bmap.c
index 0efd1d1..cc8744a 100644
--- a/gfs-kernel/src/gfs/bmap.c
+++ b/gfs-kernel/src/gfs/bmap.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
diff --git a/gfs-kernel/src/gfs/dio.c b/gfs-kernel/src/gfs/dio.c
index 0d09023..7313f7b 100644
--- a/gfs-kernel/src/gfs/dio.c
+++ b/gfs-kernel/src/gfs/dio.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/mm.h>
diff --git a/gfs-kernel/src/gfs/dir.c b/gfs-kernel/src/gfs/dir.c
index 7dadf7f..14422af 100644
--- a/gfs-kernel/src/gfs/dir.c
+++ b/gfs-kernel/src/gfs/dir.c
@@ -48,7 +48,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/vmalloc.h>
diff --git a/gfs-kernel/src/gfs/eaops.c b/gfs-kernel/src/gfs/eaops.c
index dbd0254..4a99707 100644
--- a/gfs-kernel/src/gfs/eaops.c
+++ b/gfs-kernel/src/gfs/eaops.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <asm/uaccess.h>
diff --git a/gfs-kernel/src/gfs/eattr.c b/gfs-kernel/src/gfs/eattr.c
index 062b682..8f7d88c 100644
--- a/gfs-kernel/src/gfs/eattr.c
+++ b/gfs-kernel/src/gfs/eattr.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <asm/uaccess.h>
diff --git a/gfs-kernel/src/gfs/file.c b/gfs-kernel/src/gfs/file.c
index 3f8e5b9..a9c6ff2 100644
--- a/gfs-kernel/src/gfs/file.c
+++ b/gfs-kernel/src/gfs/file.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <asm/uaccess.h>
diff --git a/gfs-kernel/src/gfs/gfs.h b/gfs-kernel/src/gfs/gfs.h
index 7cec09c..6616662 100644
--- a/gfs-kernel/src/gfs/gfs.h
+++ b/gfs-kernel/src/gfs/gfs.h
@@ -3,7 +3,7 @@
#define RELEASE_VERSION "<CVS>"
-#include "lm_interface.h"
+#include <linux/lm_interface.h>
#include "gfs_ondisk.h"
#include "fixed_div64.h"
diff --git a/gfs-kernel/src/gfs/glock.c b/gfs-kernel/src/gfs/glock.c
index 57a829d..a54ffed 100644
--- a/gfs-kernel/src/gfs/glock.c
+++ b/gfs-kernel/src/gfs/glock.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <asm/uaccess.h>
diff --git a/gfs-kernel/src/gfs/glops.c b/gfs-kernel/src/gfs/glops.c
index 708291d..37f5c09 100644
--- a/gfs-kernel/src/gfs/glops.c
+++ b/gfs-kernel/src/gfs/glops.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
diff --git a/gfs-kernel/src/gfs/inode.c b/gfs-kernel/src/gfs/inode.c
index 45245bb..533117a 100644
--- a/gfs-kernel/src/gfs/inode.c
+++ b/gfs-kernel/src/gfs/inode.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/posix_acl.h>
@@ -910,7 +910,7 @@ gfs_lookupi(struct gfs_holder *d_gh, struct qstr *name,
return error;
if (!is_root) {
- error = inode_permission(dip->i_vnode, MAY_EXEC);
+ error = permission(dip->i_vnode, MAY_EXEC, NULL);
if (error) {
gfs_glock_dq(d_gh);
return error;
@@ -952,7 +952,7 @@ gfs_lookupi(struct gfs_holder *d_gh, struct qstr *name,
}
if (!is_root) {
- error = inode_permission(dip->i_vnode, MAY_EXEC);
+ error = permission(dip->i_vnode, MAY_EXEC, NULL);
if (error) {
gfs_glock_dq(d_gh);
gfs_glock_dq_uninit(i_gh);
@@ -1017,7 +1017,7 @@ create_ok(struct gfs_inode *dip, struct qstr *name, unsigned int type)
{
int error;
- error = inode_permission(dip->i_vnode, MAY_WRITE | MAY_EXEC);
+ error = permission(dip->i_vnode, MAY_WRITE | MAY_EXEC, NULL);
[...3077 lines suppressed...]
* Shamelessly ripped from ext3
*
@@ -1268,7 +1269,7 @@ gfs_follow_link(struct dentry *dentry, struct nameidata *nd)
*/
static int
-gfs_permission_i(struct inode *inode, int mask)
+gfs_permission_i(struct inode *inode, int mask, struct nameidata *nd)
{
return generic_permission(inode, mask, gfs_check_acl);
}
@@ -1277,12 +1278,13 @@ gfs_permission_i(struct inode *inode, int mask)
* gfs_permission -
* @inode:
* @mask:
+ * @nd: passed from Linux VFS, ignored by us
*
* Returns: errno
*/
static int
-gfs_permission(struct inode *inode, int mask)
+gfs_permission(struct inode *inode, int mask, struct nameidata *nd)
{
struct gfs_inode *ip = get_v2ip(inode);
struct gfs_holder i_gh;
@@ -1296,7 +1298,7 @@ gfs_permission(struct inode *inode, int mask)
if (error)
return error;
- error = gfs_permission_i(inode, mask);
+ error = gfs_permission_i(inode, mask, nd);
gfs_glock_dq_uninit(&i_gh);
@@ -1367,7 +1369,7 @@ gfs_setattr(struct dentry *dentry, struct iattr *attr)
goto fail;
if (attr->ia_valid & ATTR_SIZE) {
- error = inode_permission(inode, MAY_WRITE);
+ error = permission(inode, MAY_WRITE, NULL);
if (error)
goto fail;
diff --git a/gfs-kernel/src/gfs/ops_super.c b/gfs-kernel/src/gfs/ops_super.c
index 3b3eec3..3b869cb 100644
--- a/gfs-kernel/src/gfs/ops_super.c
+++ b/gfs-kernel/src/gfs/ops_super.c
@@ -3,7 +3,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/buffer_head.h>
#include <linux/vmalloc.h>
#include <linux/statfs.h>
diff --git a/gfs-kernel/src/gfs/ops_vm.c b/gfs-kernel/src/gfs/ops_vm.c
index 423435e..cad15cb 100644
--- a/gfs-kernel/src/gfs/ops_vm.c
+++ b/gfs-kernel/src/gfs/ops_vm.c
@@ -1,7 +1,7 @@
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/mm.h>
diff --git a/gfs-kernel/src/gfs/page.c b/gfs-kernel/src/gfs/page.c
index 4c5cdb3..faac61a 100644
--- a/gfs-kernel/src/gfs/page.c
+++ b/gfs-kernel/src/gfs/page.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/pagemap.h>
diff --git a/gfs-kernel/src/gfs/proc.c b/gfs-kernel/src/gfs/proc.c
index b25cd1c..7685344 100644
--- a/gfs-kernel/src/gfs/proc.c
+++ b/gfs-kernel/src/gfs/proc.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/proc_fs.h>
diff --git a/gfs-kernel/src/gfs/quota.c b/gfs-kernel/src/gfs/quota.c
index 4e2bee6..13093a6 100644
--- a/gfs-kernel/src/gfs/quota.c
+++ b/gfs-kernel/src/gfs/quota.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/tty.h>
diff --git a/gfs-kernel/src/gfs/recovery.c b/gfs-kernel/src/gfs/recovery.c
index ba5f34d..ed759f2 100644
--- a/gfs-kernel/src/gfs/recovery.c
+++ b/gfs-kernel/src/gfs/recovery.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
diff --git a/gfs-kernel/src/gfs/rgrp.c b/gfs-kernel/src/gfs/rgrp.c
index e0c670f..947757e 100644
--- a/gfs-kernel/src/gfs/rgrp.c
+++ b/gfs-kernel/src/gfs/rgrp.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
diff --git a/gfs-kernel/src/gfs/super.c b/gfs-kernel/src/gfs/super.c
index 943ee31..438aa07 100644
--- a/gfs-kernel/src/gfs/super.c
+++ b/gfs-kernel/src/gfs/super.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/vmalloc.h>
diff --git a/gfs-kernel/src/gfs/sys.c b/gfs-kernel/src/gfs/sys.c
index 77f542a..f28b01f 100644
--- a/gfs-kernel/src/gfs/sys.c
+++ b/gfs-kernel/src/gfs/sys.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/proc_fs.h>
diff --git a/gfs-kernel/src/gfs/trans.c b/gfs-kernel/src/gfs/trans.c
index 985533e..cefb4a3 100644
--- a/gfs-kernel/src/gfs/trans.c
+++ b/gfs-kernel/src/gfs/trans.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
diff --git a/gfs-kernel/src/gfs/unlinked.c b/gfs-kernel/src/gfs/unlinked.c
index d41c48a..90d427c 100644
--- a/gfs-kernel/src/gfs/unlinked.c
+++ b/gfs-kernel/src/gfs/unlinked.c
@@ -3,7 +3,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
diff --git a/gfs-kernel/src/gfs/util.c b/gfs-kernel/src/gfs/util.c
index 7d1c0e4..eebfef2 100644
--- a/gfs-kernel/src/gfs/util.c
+++ b/gfs-kernel/src/gfs/util.c
@@ -2,7 +2,7 @@
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
-#include <linux/semaphore.h>
+#include <asm/semaphore.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <asm/uaccess.h>
Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/gfs2-utils/F-9/.cvsignore,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- .cvsignore 14 Aug 2008 12:30:30 -0000 1.16
+++ .cvsignore 21 Oct 2008 06:19:42 -0000 1.17
@@ -1 +1 @@
-cluster-2.03.07.tar.gz
+cluster-2.03.08.tar.gz
Index: gfs2-utils.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gfs2-utils/F-9/gfs2-utils.spec,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- gfs2-utils.spec 14 Aug 2008 12:30:30 -0000 1.26
+++ gfs2-utils.spec 21 Oct 2008 06:19:42 -0000 1.27
@@ -11,7 +11,7 @@
###############################################################################
Name: gfs2-utils
-Version: 2.03.07
+Version: 2.03.08
Release: 1%{?dist}
License: GPLv2+ and LGPLv2+
Group: System Environment/Kernel
@@ -29,8 +29,8 @@
# For the rawhide rpm we use a checkout of the -git tree (cluster 3)
# rather than the release version (which we use for all F-? versions).
Source0: cluster-%{version}.tar.gz
-Patch0: kernel-2.6.25.diff
-Patch1: userland-2.6.26.diff
+Patch0: kernel-2.6.26_1.diff
+Patch1: kernel-2.6.26_2.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -78,6 +78,12 @@
%{_mandir}/man8/*gfs2*
%changelog
+* Tue Oct 21 2008 Fabio M. Di Nitto <fdinitto at redhat.com> - 2.03.08-1
+- New upstream release
+ Fix rhbz#460376 CVE-2008-4192
+ Fix rhbz#467386 CVE-2008-4579
+- cleanup/update patches to match 2.6.26 kernel in F-9
+
* Thu Aug 14 2008 Fabio M. Di Nitto <fdinitto at redhat.com> - 2.03.07-1
- New upstream release
- Fix rgmanager startup locking issues
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/gfs2-utils/F-9/sources,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- sources 14 Aug 2008 12:30:30 -0000 1.17
+++ sources 21 Oct 2008 06:19:42 -0000 1.18
@@ -1 +1 @@
-bb5d23e582bedfc41cac121e35f594de cluster-2.03.07.tar.gz
+a9cfbcbadbbd936da4895604cc5cc07d cluster-2.03.08.tar.gz
--- kernel-2.6.25.diff DELETED ---
--- userland-2.6.26.diff DELETED ---
- Previous message (by thread): rpms/libusb/devel libusb.spec,1.44,1.45
- Next message (by thread): rpms/rgmanager/F-9 kernel-2.6.26_1.diff, NONE, 1.1 kernel-2.6.26_2.diff, NONE, 1.1 .cvsignore, 1.18, 1.19 rgmanager.spec, 1.48, 1.49 sources, 1.27, 1.28 kernel-2.6.25.diff, 1.1, NONE userland-2.6.26.diff, 1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list