All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 0/9] 2.6.19-stable review
@ 2007-02-27  0:05 ` Greg KH
  2007-02-27  0:06   ` [patch 1/9] fix umask when noACL kernel meets extN tuned for ACLs Greg KH
                     ` (10 more replies)
  0 siblings, 11 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:05 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan

This is the start of the stable review cycle for the 2.6.19.6 release.

This will probably be the last release of the 2.6.19-stable series, so
if there are patches that you feel should be applied to that tree,
please let me know.

There are 9 patches in this series, all will be posted as a response to
this one.  If anyone has any issues with these being applied, please let
us know.  If anyone is a maintainer of the proper subsystem, and wants
to add a Signed-off-by: line to the patch, please respond with it.

These patches are sent out with a number of different people on the Cc:
line.  If you wish to be a reviewer, please email stable@kernel.org to
add your name to the list.  If you want to be off the reviewer list,
also email us.

Responses should be made by Thursday March 1 00:00 UTC.  Anything
received after that time might be too late.

The whole patch set can be downloaded at:
        kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19.6-rc1.gz

thanks,

the -stable release team

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 1/9] fix umask when noACL kernel meets extN tuned for ACLs
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  0:28     ` Andreas Gruenbacher
  2007-02-27  0:06   ` [patch 2/9] Backport of psmouse suspend/shutdown cleanups Greg KH
                     ` (9 subsequent siblings)
  10 siblings, 1 reply; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable, Greg KH
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, Chris Wright,
	Tigran Aivazian, Andreas Gruenbacher, Hugh Dickins

[-- Attachment #1: fix-umask-when-noacl-kernel-meets-extn-tuned-for-acls.patch --]
[-- Type: text/plain, Size: 3432 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Hugh Dickins <hugh@veritas.com>

Fix insecure default behaviour reported by Tigran Aivazian: if an ext2
or ext3 or ext4 filesystem is tuned to mount with "acl", but mounted by
a kernel built without ACL support, then umask was ignored when creating
inodes - though root or user has umask 022, touch creates files as 0666,
and mkdir creates directories as 0777.

This appears to have worked right until 2.6.11, when a fix to the default
mode on symlinks (always 0777) assumed VFS applies umask: which it does,
unless the mount is marked for ACLs; but ext[234] set MS_POSIXACL in
s_flags according to s_mount_opt set according to def_mount_opts.

We could revert to the 2.6.10 ext[234]_init_acl (adding an S_ISLNK test);
but other filesystems only set MS_POSIXACL when ACLs are configured.  We
could fix this at another level; but it seems most robust to avoid setting
the s_mount_opt flag in the first place (at the expense of more ifdefs).

Likewise don't set the XATTR_USER flag when built without XATTR support.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Acked-by: Andreas Gruenbacher <agruen@suse.de>
Cc: Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 fs/ext2/super.c |    4 ++++
 fs/ext3/super.c |    4 ++++
 fs/ext4/super.c |    4 ++++
 3 files changed, 12 insertions(+)

--- linux-2.6.19.5.orig/fs/ext2/super.c
+++ linux-2.6.19.5/fs/ext2/super.c
@@ -710,10 +710,14 @@ static int ext2_fill_super(struct super_
 		set_opt(sbi->s_mount_opt, GRPID);
 	if (def_mount_opts & EXT2_DEFM_UID16)
 		set_opt(sbi->s_mount_opt, NO_UID32);
+#ifdef CONFIG_EXT2_FS_XATTR
 	if (def_mount_opts & EXT2_DEFM_XATTR_USER)
 		set_opt(sbi->s_mount_opt, XATTR_USER);
+#endif
+#ifdef CONFIG_EXT2_FS_POSIX_ACL
 	if (def_mount_opts & EXT2_DEFM_ACL)
 		set_opt(sbi->s_mount_opt, POSIX_ACL);
+#endif
 	
 	if (le16_to_cpu(sbi->s_es->s_errors) == EXT2_ERRORS_PANIC)
 		set_opt(sbi->s_mount_opt, ERRORS_PANIC);
--- linux-2.6.19.5.orig/fs/ext3/super.c
+++ linux-2.6.19.5/fs/ext3/super.c
@@ -1455,10 +1455,14 @@ static int ext3_fill_super (struct super
 		set_opt(sbi->s_mount_opt, GRPID);
 	if (def_mount_opts & EXT3_DEFM_UID16)
 		set_opt(sbi->s_mount_opt, NO_UID32);
+#ifdef CONFIG_EXT3_FS_XATTR
 	if (def_mount_opts & EXT3_DEFM_XATTR_USER)
 		set_opt(sbi->s_mount_opt, XATTR_USER);
+#endif
+#ifdef CONFIG_EXT3_FS_POSIX_ACL
 	if (def_mount_opts & EXT3_DEFM_ACL)
 		set_opt(sbi->s_mount_opt, POSIX_ACL);
+#endif
 	if ((def_mount_opts & EXT3_DEFM_JMODE) == EXT3_DEFM_JMODE_DATA)
 		sbi->s_mount_opt |= EXT3_MOUNT_JOURNAL_DATA;
 	else if ((def_mount_opts & EXT3_DEFM_JMODE) == EXT3_DEFM_JMODE_ORDERED)
--- linux-2.6.19.5.orig/fs/ext4/super.c
+++ linux-2.6.19.5/fs/ext4/super.c
@@ -1512,10 +1512,14 @@ static int ext4_fill_super (struct super
 		set_opt(sbi->s_mount_opt, GRPID);
 	if (def_mount_opts & EXT4_DEFM_UID16)
 		set_opt(sbi->s_mount_opt, NO_UID32);
+#ifdef CONFIG_EXT4DEV_FS_XATTR
 	if (def_mount_opts & EXT4_DEFM_XATTR_USER)
 		set_opt(sbi->s_mount_opt, XATTR_USER);
+#endif
+#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
 	if (def_mount_opts & EXT4_DEFM_ACL)
 		set_opt(sbi->s_mount_opt, POSIX_ACL);
+#endif
 	if ((def_mount_opts & EXT4_DEFM_JMODE) == EXT4_DEFM_JMODE_DATA)
 		sbi->s_mount_opt |= EXT4_MOUNT_JOURNAL_DATA;
 	else if ((def_mount_opts & EXT4_DEFM_JMODE) == EXT4_DEFM_JMODE_ORDERED)

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 2/9] Backport of psmouse suspend/shutdown cleanups
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
  2007-02-27  0:06   ` [patch 1/9] fix umask when noACL kernel meets extN tuned for ACLs Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  0:06   ` [patch 3/9] fix memory corruption from misinterpreted bad_inode_ops return values (CVE-2006-5753) Greg KH
                     ` (8 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, Dmitry Torokhov,
	Dmitry Torokhov, Thomas Renninger

[-- Attachment #1: backport-of-psmouse-suspend-shutdown-cleanups.patch --]
[-- Type: text/plain, Size: 2650 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Thomas Renninger <trenn@suse.de>

This patch works back to 2.6.17 (earlier kernels seem to
need up/down operations on mutex/semaphore).

psmouse - properly reset mouse on shutdown/suspend

Some people report that they need psmouse module unloaded
for suspend to ram/disk to work properly. Let's make port
cleanup behave the same way as driver unload.

This fixes "bad state" problem on various HP laptops, such
as nx7400.


Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/input/mouse/psmouse-base.c |   28 ++++++++++++++++++++++++++++
 drivers/input/mouse/psmouse.h      |    1 +
 drivers/input/mouse/synaptics.c    |    1 +
 3 files changed, 30 insertions(+)

--- linux-2.6.19.5.orig/drivers/input/mouse/psmouse-base.c
+++ linux-2.6.19.5/drivers/input/mouse/psmouse-base.c
@@ -986,8 +986,36 @@ static void psmouse_resync(void *p)
 static void psmouse_cleanup(struct serio *serio)
 {
 	struct psmouse *psmouse = serio_get_drvdata(serio);
+	struct psmouse *parent = NULL;
+
+	mutex_lock(&psmouse_mutex);
+
+	if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) {
+		parent = serio_get_drvdata(serio->parent);
+		psmouse_deactivate(parent);
+	}
+
+	psmouse_deactivate(psmouse);
+
+	if (psmouse->cleanup)
+		psmouse->cleanup(psmouse);
 
 	psmouse_reset(psmouse);
+
+/*
+ * Some boxes, such as HP nx7400, get terribly confused if mouse
+ * is not fully enabled before suspending/shutting down.
+ */
+	ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE);
+
+	if (parent) {
+		if (parent->pt_deactivate)
+			parent->pt_deactivate(parent);
+
+		psmouse_activate(parent);
+	}
+
+	mutex_unlock(&psmouse_mutex);
 }
 
 /*
--- linux-2.6.19.5.orig/drivers/input/mouse/psmouse.h
+++ linux-2.6.19.5/drivers/input/mouse/psmouse.h
@@ -68,6 +68,7 @@ struct psmouse {
 
 	int (*reconnect)(struct psmouse *psmouse);
 	void (*disconnect)(struct psmouse *psmouse);
+	void (*cleanup)(struct psmouse *psmouse);
 	int (*poll)(struct psmouse *psmouse);
 
 	void (*pt_activate)(struct psmouse *psmouse);
--- linux-2.6.19.5.orig/drivers/input/mouse/synaptics.c
+++ linux-2.6.19.5/drivers/input/mouse/synaptics.c
@@ -652,6 +652,7 @@ int synaptics_init(struct psmouse *psmou
 	psmouse->set_rate = synaptics_set_rate;
 	psmouse->disconnect = synaptics_disconnect;
 	psmouse->reconnect = synaptics_reconnect;
+	psmouse->cleanup = synaptics_reset;
 	psmouse->pktsize = 6;
 	/* Synaptics can usually stay in sync without extra help */
 	psmouse->resync_time = 0;

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 3/9] fix memory corruption from misinterpreted bad_inode_ops return values (CVE-2006-5753)
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
  2007-02-27  0:06   ` [patch 1/9] fix umask when noACL kernel meets extN tuned for ACLs Greg KH
  2007-02-27  0:06   ` [patch 2/9] Backport of psmouse suspend/shutdown cleanups Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  0:06   ` [patch 4/9] netpoll: drivers must not enable IRQ unconditionally in their NAPI handler Greg KH
                     ` (7 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable, Greg KH
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, Eric Sandeen, Al Viro,
	Andrew Morton, Linus Torvalds

[-- Attachment #1: fix-memory-corruption-from-misinterpreted-bad_inode_ops-return-values.patch --]
[-- Type: text/plain, Size: 10158 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Eric Sandeen <sandeen@redhat.com>

CVE-2006-5753 is for a case where an inode can be marked bad, switching
the ops to bad_inode_ops, which are all connected as:

static int return_EIO(void)
{
        return -EIO;
}

#define EIO_ERROR ((void *) (return_EIO))

static struct inode_operations bad_inode_ops =
{
        .create         = bad_inode_create
...etc...

The problem here is that the void cast causes return types to not be
promoted, and for ops such as listxattr which expect more than 32 bits of
return value, the 32-bit -EIO is interpreted as a large positive 64-bit
number, i.e. 0x00000000fffffffa instead of 0xfffffffa.

This goes particularly badly when the return value is taken as a number of
bytes to copy into, say, a user's buffer for example...

I originally had coded up the fix by creating a return_EIO_<TYPE> macro
for each return type, like this:

static int return_EIO_int(void)
{
	return -EIO;
}
#define EIO_ERROR_INT ((void *) (return_EIO_int))

static struct inode_operations bad_inode_ops =
{
	.create		= EIO_ERROR_INT,
...etc...

but Al felt that it was probably better to create an EIO-returner for each
actual op signature.  Since so few ops share a signature, I just went ahead
& created an EIO function for each individual file & inode op that returns
a value.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>


---
 fs/bad_inode.c |  330 +++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 289 insertions(+), 41 deletions(-)

--- linux-2.6.19.5.orig/fs/bad_inode.c
+++ linux-2.6.19.5/fs/bad_inode.c
@@ -14,59 +14,307 @@
 #include <linux/time.h>
 #include <linux/smp_lock.h>
 #include <linux/namei.h>
+#include <linux/poll.h>
 
-static int return_EIO(void)
+
+static loff_t bad_file_llseek(struct file *file, loff_t offset, int origin)
+{
+	return -EIO;
+}
+
+static ssize_t bad_file_read(struct file *filp, char __user *buf,
+			size_t size, loff_t *ppos)
+{
+        return -EIO;
+}
+
+static ssize_t bad_file_write(struct file *filp, const char __user *buf,
+			size_t siz, loff_t *ppos)
+{
+        return -EIO;
+}
+
+static ssize_t bad_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
+			unsigned long nr_segs, loff_t pos)
+{
+	return -EIO;
+}
+
+static ssize_t bad_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
+			unsigned long nr_segs, loff_t pos)
+{
+	return -EIO;
+}
+
+static int bad_file_readdir(struct file *filp, void *dirent, filldir_t filldir)
+{
+	return -EIO;
+}
+
+static unsigned int bad_file_poll(struct file *filp, poll_table *wait)
+{
+	return POLLERR;
+}
+
+static int bad_file_ioctl (struct inode *inode, struct file *filp,
+			unsigned int cmd, unsigned long arg)
+{
+	return -EIO;
+}
+
+static long bad_file_unlocked_ioctl(struct file *file, unsigned cmd,
+			unsigned long arg)
+{
+	return -EIO;
+}
+
+static long bad_file_compat_ioctl(struct file *file, unsigned int cmd,
+			unsigned long arg)
+{
+	return -EIO;
+}
+
+static int bad_file_mmap(struct file *file, struct vm_area_struct *vma)
+{
+	return -EIO;
+}
+
+static int bad_file_open(struct inode *inode, struct file *filp)
+{
+	return -EIO;
+}
+
+static int bad_file_flush(struct file *file, fl_owner_t id)
+{
+	return -EIO;
+}
+
+static int bad_file_release(struct inode *inode, struct file *filp)
+{
+	return -EIO;
+}
+
+static int bad_file_fsync(struct file *file, struct dentry *dentry,
+			int datasync)
+{
+	return -EIO;
+}
+
+static int bad_file_aio_fsync(struct kiocb *iocb, int datasync)
+{
+	return -EIO;
+}
+
+static int bad_file_fasync(int fd, struct file *filp, int on)
+{
+	return -EIO;
+}
+
+static int bad_file_lock(struct file *file, int cmd, struct file_lock *fl)
+{
+	return -EIO;
+}
+
+static ssize_t bad_file_sendfile(struct file *in_file, loff_t *ppos,
+			size_t count, read_actor_t actor, void *target)
+{
+	return -EIO;
+}
+
+static ssize_t bad_file_sendpage(struct file *file, struct page *page,
+			int off, size_t len, loff_t *pos, int more)
+{
+	return -EIO;
+}
+
+static unsigned long bad_file_get_unmapped_area(struct file *file,
+				unsigned long addr, unsigned long len,
+				unsigned long pgoff, unsigned long flags)
+{
+	return -EIO;
+}
+
+static int bad_file_check_flags(int flags)
 {
 	return -EIO;
 }
 
-#define EIO_ERROR ((void *) (return_EIO))
+static int bad_file_dir_notify(struct file *file, unsigned long arg)
+{
+	return -EIO;
+}
+
+static int bad_file_flock(struct file *filp, int cmd, struct file_lock *fl)
+{
+	return -EIO;
+}
+
+static ssize_t bad_file_splice_write(struct pipe_inode_info *pipe,
+			struct file *out, loff_t *ppos, size_t len,
+			unsigned int flags)
+{
+	return -EIO;
+}
+
+static ssize_t bad_file_splice_read(struct file *in, loff_t *ppos,
+			struct pipe_inode_info *pipe, size_t len,
+			unsigned int flags)
+{
+	return -EIO;
+}
 
 static const struct file_operations bad_file_ops =
 {
-	.llseek		= EIO_ERROR,
-	.aio_read	= EIO_ERROR,
-	.read		= EIO_ERROR,
-	.write		= EIO_ERROR,
-	.aio_write	= EIO_ERROR,
-	.readdir	= EIO_ERROR,
-	.poll		= EIO_ERROR,
-	.ioctl		= EIO_ERROR,
-	.mmap		= EIO_ERROR,
-	.open		= EIO_ERROR,
-	.flush		= EIO_ERROR,
-	.release	= EIO_ERROR,
-	.fsync		= EIO_ERROR,
-	.aio_fsync	= EIO_ERROR,
-	.fasync		= EIO_ERROR,
-	.lock		= EIO_ERROR,
-	.sendfile	= EIO_ERROR,
-	.sendpage	= EIO_ERROR,
-	.get_unmapped_area = EIO_ERROR,
+	.llseek		= bad_file_llseek,
+	.read		= bad_file_read,
+	.write		= bad_file_write,
+	.aio_read	= bad_file_aio_read,
+	.aio_write	= bad_file_aio_write,
+	.readdir	= bad_file_readdir,
+	.poll		= bad_file_poll,
+	.ioctl		= bad_file_ioctl,
+	.unlocked_ioctl	= bad_file_unlocked_ioctl,
+	.compat_ioctl	= bad_file_compat_ioctl,
+	.mmap		= bad_file_mmap,
+	.open		= bad_file_open,
+	.flush		= bad_file_flush,
+	.release	= bad_file_release,
+	.fsync		= bad_file_fsync,
+	.aio_fsync	= bad_file_aio_fsync,
+	.fasync		= bad_file_fasync,
+	.lock		= bad_file_lock,
+	.sendfile	= bad_file_sendfile,
+	.sendpage	= bad_file_sendpage,
+	.get_unmapped_area = bad_file_get_unmapped_area,
+	.check_flags	= bad_file_check_flags,
+	.dir_notify	= bad_file_dir_notify,
+	.flock		= bad_file_flock,
+	.splice_write	= bad_file_splice_write,
+	.splice_read	= bad_file_splice_read,
 };
 
+static int bad_inode_create (struct inode *dir, struct dentry *dentry,
+		int mode, struct nameidata *nd)
+{
+	return -EIO;
+}
+
+static struct dentry *bad_inode_lookup(struct inode *dir,
+			struct dentry *dentry, struct nameidata *nd)
+{
+	return ERR_PTR(-EIO);
+}
+
+static int bad_inode_link (struct dentry *old_dentry, struct inode *dir,
+		struct dentry *dentry)
+{
+	return -EIO;
+}
+
+static int bad_inode_unlink(struct inode *dir, struct dentry *dentry)
+{
+	return -EIO;
+}
+
+static int bad_inode_symlink (struct inode *dir, struct dentry *dentry,
+		const char *symname)
+{
+	return -EIO;
+}
+
+static int bad_inode_mkdir(struct inode *dir, struct dentry *dentry,
+			int mode)
+{
+	return -EIO;
+}
+
+static int bad_inode_rmdir (struct inode *dir, struct dentry *dentry)
+{
+	return -EIO;
+}
+
+static int bad_inode_mknod (struct inode *dir, struct dentry *dentry,
+			int mode, dev_t rdev)
+{
+	return -EIO;
+}
+
+static int bad_inode_rename (struct inode *old_dir, struct dentry *old_dentry,
+		struct inode *new_dir, struct dentry *new_dentry)
+{
+	return -EIO;
+}
+
+static int bad_inode_readlink(struct dentry *dentry, char __user *buffer,
+		int buflen)
+{
+	return -EIO;
+}
+
+static int bad_inode_permission(struct inode *inode, int mask,
+			struct nameidata *nd)
+{
+	return -EIO;
+}
+
+static int bad_inode_getattr(struct vfsmount *mnt, struct dentry *dentry,
+			struct kstat *stat)
+{
+	return -EIO;
+}
+
+static int bad_inode_setattr(struct dentry *direntry, struct iattr *attrs)
+{
+	return -EIO;
+}
+
+static int bad_inode_setxattr(struct dentry *dentry, const char *name,
+		const void *value, size_t size, int flags)
+{
+	return -EIO;
+}
+
+static ssize_t bad_inode_getxattr(struct dentry *dentry, const char *name,
+			void *buffer, size_t size)
+{
+	return -EIO;
+}
+
+static ssize_t bad_inode_listxattr(struct dentry *dentry, char *buffer,
+			size_t buffer_size)
+{
+	return -EIO;
+}
+
+static int bad_inode_removexattr(struct dentry *dentry, const char *name)
+{
+	return -EIO;
+}
+
 static struct inode_operations bad_inode_ops =
 {
-	.create		= EIO_ERROR,
-	.lookup		= EIO_ERROR,
-	.link		= EIO_ERROR,
-	.unlink		= EIO_ERROR,
-	.symlink	= EIO_ERROR,
-	.mkdir		= EIO_ERROR,
-	.rmdir		= EIO_ERROR,
-	.mknod		= EIO_ERROR,
-	.rename		= EIO_ERROR,
-	.readlink	= EIO_ERROR,
+	.create		= bad_inode_create,
+	.lookup		= bad_inode_lookup,
+	.link		= bad_inode_link,
+	.unlink		= bad_inode_unlink,
+	.symlink	= bad_inode_symlink,
+	.mkdir		= bad_inode_mkdir,
+	.rmdir		= bad_inode_rmdir,
+	.mknod		= bad_inode_mknod,
+	.rename		= bad_inode_rename,
+	.readlink	= bad_inode_readlink,
 	/* follow_link must be no-op, otherwise unmounting this inode
 	   won't work */
-	.truncate	= EIO_ERROR,
-	.permission	= EIO_ERROR,
-	.getattr	= EIO_ERROR,
-	.setattr	= EIO_ERROR,
-	.setxattr	= EIO_ERROR,
-	.getxattr	= EIO_ERROR,
-	.listxattr	= EIO_ERROR,
-	.removexattr	= EIO_ERROR,
+	/* put_link returns void */
+	/* truncate returns void */
+	.permission	= bad_inode_permission,
+	.getattr	= bad_inode_getattr,
+	.setattr	= bad_inode_setattr,
+	.setxattr	= bad_inode_setxattr,
+	.getxattr	= bad_inode_getxattr,
+	.listxattr	= bad_inode_listxattr,
+	.removexattr	= bad_inode_removexattr,
+	/* truncate_range returns void */
 };
 
 
@@ -88,7 +336,7 @@ static struct inode_operations bad_inode
  *	on it to fail from this point on.
  */
  
-void make_bad_inode(struct inode * inode) 
+void make_bad_inode(struct inode *inode)
 {
 	remove_inode_hash(inode);
 
@@ -113,7 +361,7 @@ EXPORT_SYMBOL(make_bad_inode);
  *	Returns true if the inode in question has been marked as bad.
  */
  
-int is_bad_inode(struct inode * inode) 
+int is_bad_inode(struct inode *inode)
 {
 	return (inode->i_op == &bad_inode_ops);	
 }

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 4/9] netpoll: drivers must not enable IRQ unconditionally in their NAPI handler
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
                     ` (2 preceding siblings ...)
  2007-02-27  0:06   ` [patch 3/9] fix memory corruption from misinterpreted bad_inode_ops return values (CVE-2006-5753) Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  0:06   ` [patch 5/9] hda-intel - Dont try to probe invalid codecs Greg KH
                     ` (6 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable, Greg KH
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, Francois Romieu, Jeff Garzik

[-- Attachment #1: netpoll-drivers-must-not-enable-irq-unconditionally-in-their-napi-handler.patch --]
[-- Type: text/plain, Size: 3737 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Francois Romieu <romieu@fr.zoreil.com>

netpoll: drivers must not enable IRQ unconditionally in their NAPI handler

net/core/netpoll.c::netpoll_send_skb() calls the poll handler when
it is available. As netconsole can be used from almost any context,
IRQ must not be enabled blindly in the NAPI handler of a driver which
supports netpoll.

b57bd06655a028aba7b92e1c19c2093e7fcfb341 fixed the issue for the
8139too.c driver.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/8139cp.c    |    6 ++++--
 drivers/net/b44.c       |    6 ++++--
 drivers/net/forcedeth.c |   11 +++++++----
 drivers/net/skge.c      |    5 +++--
 4 files changed, 18 insertions(+), 10 deletions(-)

--- linux-2.6.19.5.orig/drivers/net/8139cp.c
+++ linux-2.6.19.5/drivers/net/8139cp.c
@@ -617,13 +617,15 @@ rx_next:
 	 * this round of polling
 	 */
 	if (rx_work) {
+		unsigned long flags;
+
 		if (cpr16(IntrStatus) & cp_rx_intr_mask)
 			goto rx_status_loop;
 
-		local_irq_disable();
+		local_irq_save(flags);
 		cpw16_f(IntrMask, cp_intr_mask);
 		__netif_rx_complete(dev);
-		local_irq_enable();
+		local_irq_restore(flags);
 
 		return 0;	/* done */
 	}
--- linux-2.6.19.5.orig/drivers/net/b44.c
+++ linux-2.6.19.5/drivers/net/b44.c
@@ -879,12 +879,14 @@ static int b44_poll(struct net_device *n
 	}
 
 	if (bp->istat & ISTAT_ERRORS) {
-		spin_lock_irq(&bp->lock);
+		unsigned long flags;
+
+		spin_lock_irqsave(&bp->lock, flags);
 		b44_halt(bp);
 		b44_init_rings(bp);
 		b44_init_hw(bp, 1);
 		netif_wake_queue(bp->dev);
-		spin_unlock_irq(&bp->lock);
+		spin_unlock_irqrestore(&bp->lock, flags);
 		done = 1;
 	}
 
--- linux-2.6.19.5.orig/drivers/net/forcedeth.c
+++ linux-2.6.19.5/drivers/net/forcedeth.c
@@ -2544,14 +2544,15 @@ static int nv_napi_poll(struct net_devic
 	int pkts, limit = min(*budget, dev->quota);
 	struct fe_priv *np = netdev_priv(dev);
 	u8 __iomem *base = get_hwbase(dev);
+	unsigned long flags;
 
 	pkts = nv_rx_process(dev, limit);
 
 	if (nv_alloc_rx(dev)) {
-		spin_lock_irq(&np->lock);
+		spin_lock_irqsave(&np->lock, flags);
 		if (!np->in_shutdown)
 			mod_timer(&np->oom_kick, jiffies + OOM_REFILL);
-		spin_unlock_irq(&np->lock);
+		spin_unlock_irqrestore(&np->lock, flags);
 	}
 
 	if (pkts < limit) {
@@ -2559,13 +2560,15 @@ static int nv_napi_poll(struct net_devic
 		netif_rx_complete(dev);
 
 		/* re-enable receive interrupts */
-		spin_lock_irq(&np->lock);
+		spin_lock_irqsave(&np->lock, flags);
+
 		np->irqmask |= NVREG_IRQ_RX_ALL;
 		if (np->msi_flags & NV_MSI_X_ENABLED)
 			writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask);
 		else
 			writel(np->irqmask, base + NvRegIrqMask);
-		spin_unlock_irq(&np->lock);
+
+		spin_unlock_irqrestore(&np->lock, flags);
 		return 0;
 	} else {
 		/* used up our quantum, so reschedule */
--- linux-2.6.19.5.orig/drivers/net/skge.c
+++ linux-2.6.19.5/drivers/net/skge.c
@@ -2919,6 +2919,7 @@ static int skge_poll(struct net_device *
 	struct skge_hw *hw = skge->hw;
 	struct skge_ring *ring = &skge->rx_ring;
 	struct skge_element *e;
+	unsigned long flags;
 	int to_do = min(dev->quota, *budget);
 	int work_done = 0;
 
@@ -2956,12 +2957,12 @@ static int skge_poll(struct net_device *
 	if (work_done >=  to_do)
 		return 1; /* not done */
 
-	spin_lock_irq(&hw->hw_lock);
+	spin_lock_irqsave(&hw->hw_lock, flags);
 	__netif_rx_complete(dev);
 	hw->intr_mask |= irqmask[skge->port];
   	skge_write32(hw, B0_IMSK, hw->intr_mask);
 	skge_read32(hw, B0_IMSK);
-	spin_unlock_irq(&hw->hw_lock);
+	spin_unlock_irqrestore(&hw->hw_lock, flags);
 
 	return 0;
 }

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 5/9] hda-intel - Dont try to probe invalid codecs
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
                     ` (3 preceding siblings ...)
  2007-02-27  0:06   ` [patch 4/9] netpoll: drivers must not enable IRQ unconditionally in their NAPI handler Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  0:06   ` [patch 6/9] Fix oops when Windows server sent bad domain name null terminator Greg KH
                     ` (5 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, Takashi Iwai,
	Jaroslav Kysela

[-- Attachment #1: hda-intel-don-t-try-to-probe-invalid-codecs.patch --]
[-- Type: text/plain, Size: 973 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Takashi Iwai <tiwai@suse.de>

[ALSA] hda-intel - Don't try to probe invalid codecs

Fix the max number of codecs detected by HD-intel (and compatible)
controllers to 3.  Some hardware reports extra bits as if
connected, and the driver gets confused to probe unexisting codecs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 sound/pci/hda/hda_intel.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.19.5.orig/sound/pci/hda/hda_intel.c
+++ linux-2.6.19.5/sound/pci/hda/hda_intel.c
@@ -198,7 +198,7 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO
 
 /* STATESTS int mask: SD2,SD1,SD0 */
 #define STATESTS_INT_MASK	0x07
-#define AZX_MAX_CODECS		4
+#define AZX_MAX_CODECS		3
 
 /* SD_CTL bits */
 #define SD_CTL_STREAM_RESET	0x01	/* stream reset bit */

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 6/9] Fix oops when Windows server sent bad domain name null terminator
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
                     ` (4 preceding siblings ...)
  2007-02-27  0:06   ` [patch 5/9] hda-intel - Dont try to probe invalid codecs Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  0:06   ` [patch 7/9] USB: usbnet driver bugfix Greg KH
                     ` (4 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable, Greg KH
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, Shirish Pargaonkar,
	Steve French

[-- Attachment #1: fix-oops-when-windows-server-sent-bad-domain-name-null-terminator.patch --]
[-- Type: text/plain, Size: 1434 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Steve French <sfrench@us.ibm.com>

[CIFS] Fix oops when Windows server sent bad domain name null terminator

Fixes RedHat bug 211672

Windows sends one byte (instead of two) of null to terminate final Unicode
string (domain name) in session setup response in some cases - this caused
cifs to misalign some informational strings (making it hard to convert
from UCS16 to UTF8).

Thanks to Shaggy for his help and Akemi Yagi for debugging/testing

Signed-off-by: Shirish Pargaonkar <shirishp@us.ibm.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 fs/cifs/sess.c |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

--- linux-2.6.19.5.orig/fs/cifs/sess.c
+++ linux-2.6.19.5/fs/cifs/sess.c
@@ -182,11 +182,14 @@ static int decode_unicode_ssetup(char **
 	cFYI(1,("bleft %d",bleft));
 
 
-	/* word align, if bytes remaining is not even */
-	if(bleft % 2) {
-		bleft--;
-		data++;
-	}
+	/* SMB header is unaligned, so cifs servers word align start of
+	   Unicode strings */
+	data++;
+	bleft--; /* Windows servers do not always double null terminate
+		    their final Unicode string - in which case we
+		    now will not attempt to decode the byte of junk
+		    which follows it */
+
 	words_left = bleft / 2;
 
 	/* save off server operating system */

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 7/9] USB: usbnet driver bugfix
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
                     ` (5 preceding siblings ...)
  2007-02-27  0:06   ` [patch 6/9] Fix oops when Windows server sent bad domain name null terminator Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  0:06   ` [patch 8/9] hda-codec - Dont return error at initialization of modem codec Greg KH
                     ` (3 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable, Greg KH
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, David Brownell

[-- Attachment #1: usb-usbnet-driver-bugfix.patch --]
[-- Type: text/plain, Size: 1335 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: David Brownell <david-b@pacbell.net>

The attached fixes an oops in the usbnet driver. The same patch is
in 2.6.21-rc1, but that one has many whitespace changes. This is much
smaller.


Signed-off-by: David Brownell <david-b@pacbell.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/usb/net/usbnet.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- linux-2.6.19.5.orig/drivers/usb/net/usbnet.c
+++ linux-2.6.19.5/drivers/usb/net/usbnet.c
@@ -1181,6 +1181,9 @@ usbnet_probe (struct usb_interface *udev
 	// NOTE net->name still not usable ...
 	if (info->bind) {
 		status = info->bind (dev, udev);
+		if (status < 0)
+			goto out1;
+
 		// heuristic:  "usb%d" for links we know are two-host,
 		// else "eth%d" when there's reasonable doubt.  userspace
 		// can rename the link if it knows better.
@@ -1207,12 +1210,12 @@ usbnet_probe (struct usb_interface *udev
 	if (status == 0 && dev->status)
 		status = init_status (dev, udev);
 	if (status < 0)
-		goto out1;
+		goto out3;
 
 	if (!dev->rx_urb_size)
 		dev->rx_urb_size = dev->hard_mtu;
 	dev->maxpacket = usb_maxpacket (dev->udev, dev->out, 1);
-	
+
 	SET_NETDEV_DEV(net, &udev->dev);
 	status = register_netdev (net);
 	if (status)

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 8/9] hda-codec - Dont return error at initialization of modem codec
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
                     ` (6 preceding siblings ...)
  2007-02-27  0:06   ` [patch 7/9] USB: usbnet driver bugfix Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  0:06   ` [patch 9/9] Missing critical phys_to_virt in lib/swiotlb.c Greg KH
                     ` (2 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable, Greg KH
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, Takashi Iwai,
	Jaroslav Kysela

[-- Attachment #1: hda-codec-don-t-return-error-at-initialization-of-modem-codec.patch --]
[-- Type: text/plain, Size: 1090 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------

From: Takashi Iwai <tiwai@suse.de>

[ALSA] hda-codec - Don't return error at initialization of modem codec

Some modem codec seem to fail in the initialization, and this
stopped loading of the whole module although the audio is OK.
Since it's usually a non-fatal issue, the driver tries to proceed
to initialize now.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 sound/pci/hda/patch_si3054.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- linux-2.6.19.5.orig/sound/pci/hda/patch_si3054.c
+++ linux-2.6.19.5/sound/pci/hda/patch_si3054.c
@@ -243,7 +243,8 @@ static int si3054_init(struct hda_codec 
 
 	if((val&SI3054_MEI_READY) != SI3054_MEI_READY) {
 		snd_printk(KERN_ERR "si3054: cannot initialize. EXT MID = %04x\n", val);
-		return -EACCES;
+		/* let's pray that this is no fatal error */
+		/* return -EACCES; */
 	}
 
 	SET_REG(codec, SI3054_GPIO_POLARITY, 0xffff);

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [patch 9/9] Missing critical phys_to_virt in lib/swiotlb.c
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
                     ` (7 preceding siblings ...)
  2007-02-27  0:06   ` [patch 8/9] hda-codec - Dont return error at initialization of modem codec Greg KH
@ 2007-02-27  0:06   ` Greg KH
  2007-02-27  2:47   ` [patch 0/9] 2.6.19-stable review (mmc: Power quirk for ENE controllers) Darren Salt
  2007-02-27 20:23   ` [patch 0/9] 2.6.19-stable review Michael Krufky
  10 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-02-27  0:06 UTC (permalink / raw)
  To: linux-kernel, stable, Greg KH
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, torvalds, akpm, alan, Stefan Richter, David Moore

[-- Attachment #1: missing-critical-phys_to_virt-in-lib-swiotlb.c.patch --]
[-- Type: text/plain, Size: 942 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: David Moore <dcm@acm.org>

Adds missing call to phys_to_virt() in the
lib/swiotlb.c:swiotlb_sync_sg() function.  Without this change, a kernel
panic will always occur whenever a SWIOTLB bounce buffer from a
scatter-gather list gets synced.

Signed-off-by: David Moore <dcm@acm.org>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>


---
 lib/swiotlb.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.19.5.orig/lib/swiotlb.c
+++ linux-2.6.19.5/lib/swiotlb.c
@@ -750,7 +750,7 @@ swiotlb_sync_sg(struct device *hwdev, st
 
 	for (i = 0; i < nelems; i++, sg++)
 		if (sg->dma_address != SG_ENT_PHYS_ADDRESS(sg))
-			sync_single(hwdev, (void *) sg->dma_address,
+			sync_single(hwdev, phys_to_virt(sg->dma_address),
 				    sg->dma_length, dir, target);
 }
 

--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch 1/9] fix umask when noACL kernel meets extN tuned for ACLs
  2007-02-27  0:06   ` [patch 1/9] fix umask when noACL kernel meets extN tuned for ACLs Greg KH
@ 2007-02-27  0:28     ` Andreas Gruenbacher
  0 siblings, 0 replies; 16+ messages in thread
From: Andreas Gruenbacher @ 2007-02-27  0:28 UTC (permalink / raw)
  To: Greg KH
  Cc: linux-kernel, stable, Greg KH, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	Chris Wedgwood, Michael Krufky, Chuck Ebbert, torvalds, akpm,
	alan, Chris Wright, Tigran Aivazian, Hugh Dickins

On Monday 26 February 2007 16:06, Greg KH wrote:
> -stable review patch.  If anyone has any objections, please let us know.

Should be fine.

Thanks,
Andreas

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch 0/9] 2.6.19-stable review (mmc: Power quirk for ENE controllers)
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
                     ` (8 preceding siblings ...)
  2007-02-27  0:06   ` [patch 9/9] Missing critical phys_to_virt in lib/swiotlb.c Greg KH
@ 2007-02-27  2:47   ` Darren Salt
  2007-02-27 20:23   ` [patch 0/9] 2.6.19-stable review Michael Krufky
  10 siblings, 0 replies; 16+ messages in thread
From: Darren Salt @ 2007-02-27  2:47 UTC (permalink / raw)
  To: linux-kernel, stable

Could you add this patch (which is in 2.6.21-rc1) to the queues for 2.6.19.6
and 2.6.20.2 and, if it's ever to be released, 2.6.18.9? (There's one
trivially-fixable reject against 2.6.18, but it's otherwise fine with all
three.)


mmc: Power quirk for ENE controllers

Support for these devices was broken for 2.6.18-rc1 and later by commit
146ad66eac836c0b976c98f428d73e1f6a75270d, which added voltage level support.

This restores the previous behaviour for these devices by ensuring that when
the voltage is changed, only one write to set the voltage is performed.

It may be that both writes are needed if the voltage is being changed between
two non-zero values or that it's safe to ensure that only one write is done
if the hardware only supports one voltage; I don't know whether either is the
case nor can I test since I have only the one SD reader (1524:0550), and it
supports just the one voltage.

Signed-off-by: Darren Salt <linux@youmustbejoking.demon.co.uk>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
---

diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index c2d13d7..175a942 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -37,6 +37,7 @@ static unsigned int debug_quirks = 0;
 #define SDHCI_QUIRK_FORCE_DMA				(1<<1)
 /* Controller doesn't like some resets when there is no card inserted. */
 #define SDHCI_QUIRK_NO_CARD_NO_RESET			(1<<2)
+#define SDHCI_QUIRK_SINGLE_POWER_WRITE			(1<<3)
 
 static const struct pci_device_id pci_ids[] __devinitdata = {
 	{
@@ -65,6 +66,14 @@ static const struct pci_device_id pci_ids[] __devinitdata = {
 		.driver_data	= SDHCI_QUIRK_FORCE_DMA,
 	},
 
+	{
+		.vendor		= PCI_VENDOR_ID_ENE,
+		.device		= PCI_DEVICE_ID_ENE_CB712_SD,
+		.subvendor	= PCI_ANY_ID,
+		.subdevice	= PCI_ANY_ID,
+		.driver_data	= SDHCI_QUIRK_SINGLE_POWER_WRITE,
+	},
+
 	{	/* Generic SD host controller */
 		PCI_DEVICE_CLASS((PCI_CLASS_SYSTEM_SDHCI << 8), 0xFFFF00)
 	},
@@ -674,10 +683,17 @@ static void sdhci_set_power(struct sdhci_host *host, unsigned short power)
 	if (host->power == power)
 		return;
 
-	writeb(0, host->ioaddr + SDHCI_POWER_CONTROL);
-
-	if (power == (unsigned short)-1)
+	if (power == (unsigned short)-1) {
+		writeb(0, host->ioaddr + SDHCI_POWER_CONTROL);
 		goto out;
+	}
+
+	/*
+	 * Spec says that we should clear the power reg before setting
+	 * a new value. Some controllers don't seem to like this though.
+	 */
+	if (!(host->chip->quirks & SDHCI_QUIRK_SINGLE_POWER_WRITE))
+		writeb(0, host->ioaddr + SDHCI_POWER_CONTROL);
 
 	pwr = SDHCI_POWER_ON;
 
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 3d1d210..d37f46a 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1971,6 +1971,7 @@
 #define PCI_DEVICE_ID_TOPIC_TP560	0x0000
 
 #define PCI_VENDOR_ID_ENE		0x1524
+#define PCI_DEVICE_ID_ENE_CB712_SD	0x0550
 #define PCI_DEVICE_ID_ENE_1211		0x1211
 #define PCI_DEVICE_ID_ENE_1225		0x1225
 #define PCI_DEVICE_ID_ENE_1410		0x1410

-- 
| Darren Salt    | linux or ds at              | nr. Ashington, | Toon
| RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army
| + Burn less waste. Use less packaging. Waste less.     USE FEWER RESOURCES.

Necessity has no law.

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [patch 0/9] 2.6.19-stable review
  2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
                     ` (9 preceding siblings ...)
  2007-02-27  2:47   ` [patch 0/9] 2.6.19-stable review (mmc: Power quirk for ENE controllers) Darren Salt
@ 2007-02-27 20:23   ` Michael Krufky
  2007-03-03  1:23     ` Greg KH
  10 siblings, 1 reply; 16+ messages in thread
From: Michael Krufky @ 2007-02-27 20:23 UTC (permalink / raw)
  To: Greg KH
  Cc: linux-kernel, stable, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	Chris Wedgwood, Chuck Ebbert, torvalds, akpm, alan,
	v4l-dvb maintainer list

Greg KH wrote:
> This is the start of the stable review cycle for the 2.6.19.6 release.
> 
> This will probably be the last release of the 2.6.19-stable series, so
> if there are patches that you feel should be applied to that tree,
> please let me know.
> 
> There are 9 patches in this series, all will be posted as a response to
> this one.  If anyone has any issues with these being applied, please let
> us know.  If anyone is a maintainer of the proper subsystem, and wants
> to add a Signed-off-by: line to the patch, please respond with it.
> 
> These patches are sent out with a number of different people on the Cc:
> line.  If you wish to be a reviewer, please email stable@kernel.org to
> add your name to the list.  If you want to be off the reviewer list,
> also email us.
> 
> Responses should be made by Thursday March 1 00:00 UTC.  Anything
> received after that time might be too late.
> 
> The whole patch set can be downloaded at:
>         kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19.6-rc1.gz
> 
> thanks,
> 
> the -stable release team

Greg,

I still have three DVB patches that need to go to 2.6.19.y, the dvbdev patch
being most important.  I sent this dvbdev patch to you during the 2.6.19.5
review period and expected it to surface this time around, but maybe our email
paths have crossed.

Since I am unable to send patches inline from my current location, I've posted
the three pending patches for 2.6.19.y here:

http://linuxtv.org/~mkrufky/stable/2.6.19.y/

Please add these if possible.  Again, the
"dvbdev-fix-illegal-re-usage-of-fileoperations-struct" patch is the most
important one of these.

---

For 2.6.20.y, I have seven patches waiting for the v4l-dvb subsystem trees.  I
have posted these patches here:

http://linuxtv.org/~mkrufky/stable/2.6.20.y/

If you can queue these up for the next 2.6.20.y release, that would be great.
Otherwise, if I don't see them added to the queue, I will send them inline to
you the next time I am at my own machine (a few days from now).

Regards,

Michael Krufky


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch 0/9] 2.6.19-stable review
  2007-02-27 20:23   ` [patch 0/9] 2.6.19-stable review Michael Krufky
@ 2007-03-03  1:23     ` Greg KH
  2007-03-03  1:48       ` Michael Krufky
  0 siblings, 1 reply; 16+ messages in thread
From: Greg KH @ 2007-03-03  1:23 UTC (permalink / raw)
  To: Michael Krufky
  Cc: linux-kernel, stable, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	Chris Wedgwood, Chuck Ebbert, torvalds, akpm, alan,
	v4l-dvb maintainer list

On Tue, Feb 27, 2007 at 03:23:05PM -0500, Michael Krufky wrote:
> Greg KH wrote:
> > This is the start of the stable review cycle for the 2.6.19.6 release.
> > 
> > This will probably be the last release of the 2.6.19-stable series, so
> > if there are patches that you feel should be applied to that tree,
> > please let me know.
> > 
> > There are 9 patches in this series, all will be posted as a response to
> > this one.  If anyone has any issues with these being applied, please let
> > us know.  If anyone is a maintainer of the proper subsystem, and wants
> > to add a Signed-off-by: line to the patch, please respond with it.
> > 
> > These patches are sent out with a number of different people on the Cc:
> > line.  If you wish to be a reviewer, please email stable@kernel.org to
> > add your name to the list.  If you want to be off the reviewer list,
> > also email us.
> > 
> > Responses should be made by Thursday March 1 00:00 UTC.  Anything
> > received after that time might be too late.
> > 
> > The whole patch set can be downloaded at:
> >         kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19.6-rc1.gz
> > 
> > thanks,
> > 
> > the -stable release team
> 
> Greg,
> 
> I still have three DVB patches that need to go to 2.6.19.y, the dvbdev patch
> being most important.  I sent this dvbdev patch to you during the 2.6.19.5
> review period and expected it to surface this time around, but maybe our email
> paths have crossed.
> 
> Since I am unable to send patches inline from my current location, I've posted
> the three pending patches for 2.6.19.y here:
> 
> http://linuxtv.org/~mkrufky/stable/2.6.19.y/
> 
> Please add these if possible.  Again, the
> "dvbdev-fix-illegal-re-usage-of-fileoperations-struct" patch is the most
> important one of these.

Argh, I forgot these :(

Do you want me to do a new 2.6.19-stable release with these patches in
it?  It's my fault I didn't get this in, so I don't really mind if you
feel it is important enough (it doesn't take that long to spin another
kernel release.)

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch 0/9] 2.6.19-stable review
  2007-03-03  1:23     ` Greg KH
@ 2007-03-03  1:48       ` Michael Krufky
  2007-03-03  7:48         ` Greg KH
  0 siblings, 1 reply; 16+ messages in thread
From: Michael Krufky @ 2007-03-03  1:48 UTC (permalink / raw)
  To: Greg KH
  Cc: linux-kernel, stable, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	Chris Wedgwood, Chuck Ebbert, torvalds, akpm, alan,
	v4l-dvb maintainer list

Greg KH wrote:
> On Tue, Feb 27, 2007 at 03:23:05PM -0500, Michael Krufky wrote:
>> Greg KH wrote:
>>> This is the start of the stable review cycle for the 2.6.19.6 release.
>>>
>>> This will probably be the last release of the 2.6.19-stable series, so
>>> if there are patches that you feel should be applied to that tree,
>>> please let me know.
>>>
>>> There are 9 patches in this series, all will be posted as a response to
>>> this one.  If anyone has any issues with these being applied, please let
>>> us know.  If anyone is a maintainer of the proper subsystem, and wants
>>> to add a Signed-off-by: line to the patch, please respond with it.
>>>
>>> These patches are sent out with a number of different people on the Cc:
>>> line.  If you wish to be a reviewer, please email stable@kernel.org to
>>> add your name to the list.  If you want to be off the reviewer list,
>>> also email us.
>>>
>>> Responses should be made by Thursday March 1 00:00 UTC.  Anything
>>> received after that time might be too late.
>>>
>>> The whole patch set can be downloaded at:
>>>         kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19.6-rc1.gz
>>>
>>> thanks,
>>>
>>> the -stable release team
>> Greg,
>>
>> I still have three DVB patches that need to go to 2.6.19.y, the dvbdev patch
>> being most important.  I sent this dvbdev patch to you during the 2.6.19.5
>> review period and expected it to surface this time around, but maybe our email
>> paths have crossed.
>>
>> Since I am unable to send patches inline from my current location, I've posted
>> the three pending patches for 2.6.19.y here:
>>
>> http://linuxtv.org/~mkrufky/stable/2.6.19.y/
>>
>> Please add these if possible.  Again, the
>> "dvbdev-fix-illegal-re-usage-of-fileoperations-struct" patch is the most
>> important one of these.
> 
> Argh, I forgot these :(
> 
> Do you want me to do a new 2.6.19-stable release with these patches in
> it?  It's my fault I didn't get this in, so I don't really mind if you
> feel it is important enough (it doesn't take that long to spin another
> kernel release.)
> 
> thanks,
> 
> greg k-h

The dvbdev patch is pretty important, fixes a horrible problem, although the case for
it to occur is rare.  The other two patches are of the "obviously correct - minimal change" 
type.

If it isnt too much trouble, then yes, it is worth it to push a new release because of the
dvbdev patch.

However, please chop the "backported from" and "cherry picked from" lines from those patches.
I cherry-picked them from Mauro's tree, but he wiped it out and re-pushed those changes in
before Linus merged them....  so, the actual changesets in Linus' tree have different hashes.

(i removed those old hashes from the patches that I posted on linuxtv.org)

As for the 2.6.20.y patches, should I email those to you inline or can you just grab them from
the linuxtv.org www server?  ( http://linuxtv.org/~mkrufky/stable/2.6.20.y/ )

Thanks,

Mike Krufky

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch 0/9] 2.6.19-stable review
  2007-03-03  1:48       ` Michael Krufky
@ 2007-03-03  7:48         ` Greg KH
  0 siblings, 0 replies; 16+ messages in thread
From: Greg KH @ 2007-03-03  7:48 UTC (permalink / raw)
  To: Michael Krufky
  Cc: linux-kernel, stable, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	Chris Wedgwood, Chuck Ebbert, torvalds, akpm, alan,
	v4l-dvb maintainer list

On Fri, Mar 02, 2007 at 08:48:54PM -0500, Michael Krufky wrote:
> 
> The dvbdev patch is pretty important, fixes a horrible problem, although the case for
> it to occur is rare.  The other two patches are of the "obviously correct - minimal change" 
> type.
> 
> If it isnt too much trouble, then yes, it is worth it to push a new release because of the
> dvbdev patch.
> 
> However, please chop the "backported from" and "cherry picked from" lines from those patches.
> I cherry-picked them from Mauro's tree, but he wiped it out and re-pushed those changes in
> before Linus merged them....  so, the actual changesets in Linus' tree have different hashes.
> 
> (i removed those old hashes from the patches that I posted on linuxtv.org)

I picked up the new patches and did a new release.

> As for the 2.6.20.y patches, should I email those to you inline or can you just grab them from
> the linuxtv.org www server?  ( http://linuxtv.org/~mkrufky/stable/2.6.20.y/ )

Email is usually better, as that's what my scripts are set up to handle.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2007-03-03  7:53 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20070226235248.438556696@mini.kroah.org>
2007-02-27  0:05 ` [patch 0/9] 2.6.19-stable review Greg KH
2007-02-27  0:06   ` [patch 1/9] fix umask when noACL kernel meets extN tuned for ACLs Greg KH
2007-02-27  0:28     ` Andreas Gruenbacher
2007-02-27  0:06   ` [patch 2/9] Backport of psmouse suspend/shutdown cleanups Greg KH
2007-02-27  0:06   ` [patch 3/9] fix memory corruption from misinterpreted bad_inode_ops return values (CVE-2006-5753) Greg KH
2007-02-27  0:06   ` [patch 4/9] netpoll: drivers must not enable IRQ unconditionally in their NAPI handler Greg KH
2007-02-27  0:06   ` [patch 5/9] hda-intel - Dont try to probe invalid codecs Greg KH
2007-02-27  0:06   ` [patch 6/9] Fix oops when Windows server sent bad domain name null terminator Greg KH
2007-02-27  0:06   ` [patch 7/9] USB: usbnet driver bugfix Greg KH
2007-02-27  0:06   ` [patch 8/9] hda-codec - Dont return error at initialization of modem codec Greg KH
2007-02-27  0:06   ` [patch 9/9] Missing critical phys_to_virt in lib/swiotlb.c Greg KH
2007-02-27  2:47   ` [patch 0/9] 2.6.19-stable review (mmc: Power quirk for ENE controllers) Darren Salt
2007-02-27 20:23   ` [patch 0/9] 2.6.19-stable review Michael Krufky
2007-03-03  1:23     ` Greg KH
2007-03-03  1:48       ` Michael Krufky
2007-03-03  7:48         ` Greg KH

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.