2006-10-11 21:28:17

by Greg KH

[permalink] [raw]
Subject: [patch 00/67] 2.6.18-stable review

This is the start of the stable review cycle for the 2.6.18.1 release.
There are 67 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 [email protected] to
add your name to the list. If you want to be off the reviewer list,
also email us.

Responses should be made by Friday, October 13, 20:00:00 UTC. Anything
received after that time might be too late.

And yes, we realize that this is a large number of patches, sorry, we
have been a bit slow in responding lately. If there are any patches
that have been sent to us for the 2.6.18-stable tree, that are not in
this series, please resend them, as we think we are finally caught up
with this work.

An all-in-one patch for this series can be found at:
http://www.kernel.org/pub/linux/kernel/people/gregkh/stable/patch-2.6.18.1-rc1.gz
if anyone wants to test this out that way.

thanks,

the -stable release team


2006-10-11 21:04:34

by Greg KH

[permalink] [raw]
Subject: [patch 01/67] NET_SCHED: Fix fallout from dev->qdisc RCU change


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

------------------
From: Patrick McHardy <[email protected]>

The move of qdisc destruction to a rcu callback broke locking in the
entire qdisc layer by invalidating previously valid assumptions about
the context in which changes to the qdisc tree occur.

The two assumptions were:

- since changes only happen in process context, read_lock doesn't need
bottem half protection. Now invalid since destruction of inner qdiscs,
classifiers, actions and estimators happens in the RCU callback unless
they're manually deleted, resulting in dead-locks when read_lock in
process context is interrupted by write_lock_bh in bottem half context.

- since changes only happen under the RTNL, no additional locking is
necessary for data not used during packet processing (f.e. u32_list).
Again, since destruction now happens in the RCU callback, this assumption
is not valid anymore, causing races while using this data, which can
result in corruption or use-after-free.

Instead of "fixing" this by disabling bottem halfs everywhere and adding
new locks/refcounting, this patch makes these assumptions valid again by
moving destruction back to process context. Since only the dev->qdisc
pointer is protected by RCU, but ->enqueue and the qdisc tree are still
protected by dev->qdisc_lock, destruction of the tree can be performed
immediately and only the final free needs to happen in the rcu callback
to make sure dev_queue_xmit doesn't access already freed memory.

Signed-off-by: Patrick McHardy <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
net/core/dev.c | 14 +++++-----
net/sched/cls_api.c | 4 +-
net/sched/sch_api.c | 16 +++++------
net/sched/sch_generic.c | 66 +++++++++++++++---------------------------------
4 files changed, 39 insertions(+), 61 deletions(-)

--- linux-2.6.18.orig/net/core/dev.c
+++ linux-2.6.18/net/core/dev.c
@@ -1478,14 +1478,16 @@ gso:
if (q->enqueue) {
/* Grab device queue */
spin_lock(&dev->queue_lock);
+ q = dev->qdisc;
+ if (q->enqueue) {
+ rc = q->enqueue(skb, q);
+ qdisc_run(dev);
+ spin_unlock(&dev->queue_lock);

- rc = q->enqueue(skb, q);
-
- qdisc_run(dev);
-
+ rc = rc == NET_XMIT_BYPASS ? NET_XMIT_SUCCESS : rc;
+ goto out;
+ }
spin_unlock(&dev->queue_lock);
- rc = rc == NET_XMIT_BYPASS ? NET_XMIT_SUCCESS : rc;
- goto out;
}

/* The device has no queue. Common case for software devices:
--- linux-2.6.18.orig/net/sched/cls_api.c
+++ linux-2.6.18/net/sched/cls_api.c
@@ -401,7 +401,7 @@ static int tc_dump_tfilter(struct sk_buf
if ((dev = dev_get_by_index(tcm->tcm_ifindex)) == NULL)
return skb->len;

- read_lock_bh(&qdisc_tree_lock);
+ read_lock(&qdisc_tree_lock);
if (!tcm->tcm_parent)
q = dev->qdisc_sleeping;
else
@@ -458,7 +458,7 @@ errout:
if (cl)
cops->put(q, cl);
out:
- read_unlock_bh(&qdisc_tree_lock);
+ read_unlock(&qdisc_tree_lock);
dev_put(dev);
return skb->len;
}
--- linux-2.6.18.orig/net/sched/sch_api.c
+++ linux-2.6.18/net/sched/sch_api.c
@@ -195,14 +195,14 @@ struct Qdisc *qdisc_lookup(struct net_de
{
struct Qdisc *q;

- read_lock_bh(&qdisc_tree_lock);
+ read_lock(&qdisc_tree_lock);
list_for_each_entry(q, &dev->qdisc_list, list) {
if (q->handle == handle) {
- read_unlock_bh(&qdisc_tree_lock);
+ read_unlock(&qdisc_tree_lock);
return q;
}
}
- read_unlock_bh(&qdisc_tree_lock);
+ read_unlock(&qdisc_tree_lock);
return NULL;
}

@@ -837,7 +837,7 @@ static int tc_dump_qdisc(struct sk_buff
continue;
if (idx > s_idx)
s_q_idx = 0;
- read_lock_bh(&qdisc_tree_lock);
+ read_lock(&qdisc_tree_lock);
q_idx = 0;
list_for_each_entry(q, &dev->qdisc_list, list) {
if (q_idx < s_q_idx) {
@@ -846,12 +846,12 @@ static int tc_dump_qdisc(struct sk_buff
}
if (tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).pid,
cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWQDISC) <= 0) {
- read_unlock_bh(&qdisc_tree_lock);
+ read_unlock(&qdisc_tree_lock);
goto done;
}
q_idx++;
}
- read_unlock_bh(&qdisc_tree_lock);
+ read_unlock(&qdisc_tree_lock);
}

done:
@@ -1074,7 +1074,7 @@ static int tc_dump_tclass(struct sk_buff
s_t = cb->args[0];
t = 0;

- read_lock_bh(&qdisc_tree_lock);
+ read_lock(&qdisc_tree_lock);
list_for_each_entry(q, &dev->qdisc_list, list) {
if (t < s_t || !q->ops->cl_ops ||
(tcm->tcm_parent &&
@@ -1096,7 +1096,7 @@ static int tc_dump_tclass(struct sk_buff
break;
t++;
}
- read_unlock_bh(&qdisc_tree_lock);
+ read_unlock(&qdisc_tree_lock);

cb->args[0] = t;

--- linux-2.6.18.orig/net/sched/sch_generic.c
+++ linux-2.6.18/net/sched/sch_generic.c
@@ -45,11 +45,10 @@
The idea is the following:
- enqueue, dequeue are serialized via top level device
spinlock dev->queue_lock.
- - tree walking is protected by read_lock_bh(qdisc_tree_lock)
+ - tree walking is protected by read_lock(qdisc_tree_lock)
and this lock is used only in process context.
- - updates to tree are made under rtnl semaphore or
- from softirq context (__qdisc_destroy rcu-callback)
- hence this lock needs local bh disabling.
+ - updates to tree are made only under rtnl semaphore,
+ hence this lock may be made without local bh disabling.

qdisc_tree_lock must be grabbed BEFORE dev->queue_lock!
*/
@@ -57,14 +56,14 @@ DEFINE_RWLOCK(qdisc_tree_lock);

void qdisc_lock_tree(struct net_device *dev)
{
- write_lock_bh(&qdisc_tree_lock);
+ write_lock(&qdisc_tree_lock);
spin_lock_bh(&dev->queue_lock);
}

void qdisc_unlock_tree(struct net_device *dev)
{
spin_unlock_bh(&dev->queue_lock);
- write_unlock_bh(&qdisc_tree_lock);
+ write_unlock(&qdisc_tree_lock);
}

/*
@@ -483,20 +482,6 @@ void qdisc_reset(struct Qdisc *qdisc)
static void __qdisc_destroy(struct rcu_head *head)
{
struct Qdisc *qdisc = container_of(head, struct Qdisc, q_rcu);
- struct Qdisc_ops *ops = qdisc->ops;
-
-#ifdef CONFIG_NET_ESTIMATOR
- gen_kill_estimator(&qdisc->bstats, &qdisc->rate_est);
-#endif
- write_lock(&qdisc_tree_lock);
- if (ops->reset)
- ops->reset(qdisc);
- if (ops->destroy)
- ops->destroy(qdisc);
- write_unlock(&qdisc_tree_lock);
- module_put(ops->owner);
-
- dev_put(qdisc->dev);
kfree((char *) qdisc - qdisc->padded);
}

@@ -504,32 +489,23 @@ static void __qdisc_destroy(struct rcu_h

void qdisc_destroy(struct Qdisc *qdisc)
{
- struct list_head cql = LIST_HEAD_INIT(cql);
- struct Qdisc *cq, *q, *n;
+ struct Qdisc_ops *ops = qdisc->ops;

if (qdisc->flags & TCQ_F_BUILTIN ||
- !atomic_dec_and_test(&qdisc->refcnt))
+ !atomic_dec_and_test(&qdisc->refcnt))
return;

- if (!list_empty(&qdisc->list)) {
- if (qdisc->ops->cl_ops == NULL)
- list_del(&qdisc->list);
- else
- list_move(&qdisc->list, &cql);
- }
-
- /* unlink inner qdiscs from dev->qdisc_list immediately */
- list_for_each_entry(cq, &cql, list)
- list_for_each_entry_safe(q, n, &qdisc->dev->qdisc_list, list)
- if (TC_H_MAJ(q->parent) == TC_H_MAJ(cq->handle)) {
- if (q->ops->cl_ops == NULL)
- list_del_init(&q->list);
- else
- list_move_tail(&q->list, &cql);
- }
- list_for_each_entry_safe(cq, n, &cql, list)
- list_del_init(&cq->list);
+ list_del(&qdisc->list);
+#ifdef CONFIG_NET_ESTIMATOR
+ gen_kill_estimator(&qdisc->bstats, &qdisc->rate_est);
+#endif
+ if (ops->reset)
+ ops->reset(qdisc);
+ if (ops->destroy)
+ ops->destroy(qdisc);

+ module_put(ops->owner);
+ dev_put(qdisc->dev);
call_rcu(&qdisc->q_rcu, __qdisc_destroy);
}

@@ -549,15 +525,15 @@ void dev_activate(struct net_device *dev
printk(KERN_INFO "%s: activation failed\n", dev->name);
return;
}
- write_lock_bh(&qdisc_tree_lock);
+ write_lock(&qdisc_tree_lock);
list_add_tail(&qdisc->list, &dev->qdisc_list);
- write_unlock_bh(&qdisc_tree_lock);
+ write_unlock(&qdisc_tree_lock);
} else {
qdisc = &noqueue_qdisc;
}
- write_lock_bh(&qdisc_tree_lock);
+ write_lock(&qdisc_tree_lock);
dev->qdisc_sleeping = qdisc;
- write_unlock_bh(&qdisc_tree_lock);
+ write_unlock(&qdisc_tree_lock);
}

if (!netif_carrier_ok(dev))

--

2006-10-11 21:05:01

by Greg KH

[permalink] [raw]
Subject: [patch 11/67] zd1211rw: ZD1211B ASIC/FWT, not jointly decoder


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

------------------
From: Daniel Drake <[email protected]>

The vendor driver chooses this value based on an ifndef ASIC,
and ASIC is never defined.

Signed-off-by: Daniel Drake <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/net/wireless/zd1211rw/zd_chip.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/drivers/net/wireless/zd1211rw/zd_chip.c
+++ linux-2.6.18/drivers/net/wireless/zd1211rw/zd_chip.c
@@ -717,7 +717,7 @@ static int zd1211b_hw_reset_phy(struct z
{ CR21, 0x0e }, { CR22, 0x23 }, { CR23, 0x90 },
{ CR24, 0x14 }, { CR25, 0x40 }, { CR26, 0x10 },
{ CR27, 0x10 }, { CR28, 0x7f }, { CR29, 0x80 },
- { CR30, 0x49 }, /* jointly decoder, no ASIC */
+ { CR30, 0x4b }, /* ASIC/FWT, no jointly decoder */
{ CR31, 0x60 }, { CR32, 0x43 }, { CR33, 0x08 },
{ CR34, 0x06 }, { CR35, 0x0a }, { CR36, 0x00 },
{ CR37, 0x00 }, { CR38, 0x38 }, { CR39, 0x0c },

--

2006-10-11 21:05:00

by Greg KH

[permalink] [raw]
Subject: [patch 02/67] uml: allow using again x86/x86_64 crypto code


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

------------------
From: Paolo 'Blaisorblade' Giarrusso <[email protected]>

Enable compilation of x86_64 crypto code;, and add the needed constant
to make the code compile again (that macro was added to i386 asm-offsets
between 2.6.17 and 2.6.18, in 6c2bb98bc33ae33c7a33a133a4cd5a06395fece5).

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[email protected]>
Acked-by: Jeff Dike <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/um/Makefile-x86_64 | 2 +-
arch/um/include/common-offsets.h | 1 +
arch/um/include/sysdep-i386/kernel-offsets.h | 1 +
arch/um/include/sysdep-x86_64/kernel-offsets.h | 1 +
4 files changed, 4 insertions(+), 1 deletion(-)

--- linux-2.6.18.orig/arch/um/Makefile-x86_64
+++ linux-2.6.18/arch/um/Makefile-x86_64
@@ -1,7 +1,7 @@
# Copyright 2003 - 2004 Pathscale, Inc
# Released under the GPL

-core-y += arch/um/sys-x86_64/
+core-y += arch/um/sys-x86_64/ arch/x86_64/crypto/
START := 0x60000000

#We #undef __x86_64__ for kernelspace, not for userspace where
--- linux-2.6.18.orig/arch/um/include/common-offsets.h
+++ linux-2.6.18/arch/um/include/common-offsets.h
@@ -15,3 +15,4 @@ DEFINE_STR(UM_KERN_DEBUG, KERN_DEBUG);
DEFINE(UM_ELF_CLASS, ELF_CLASS);
DEFINE(UM_ELFCLASS32, ELFCLASS32);
DEFINE(UM_ELFCLASS64, ELFCLASS64);
+DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
--- linux-2.6.18.orig/arch/um/include/sysdep-i386/kernel-offsets.h
+++ linux-2.6.18/arch/um/include/sysdep-i386/kernel-offsets.h
@@ -1,6 +1,7 @@
#include <linux/stddef.h>
#include <linux/sched.h>
#include <linux/elf.h>
+#include <linux/crypto.h>
#include <asm/mman.h>

#define DEFINE(sym, val) \
--- linux-2.6.18.orig/arch/um/include/sysdep-x86_64/kernel-offsets.h
+++ linux-2.6.18/arch/um/include/sysdep-x86_64/kernel-offsets.h
@@ -2,6 +2,7 @@
#include <linux/sched.h>
#include <linux/time.h>
#include <linux/elf.h>
+#include <linux/crypto.h>
#include <asm/page.h>
#include <asm/mman.h>


--

2006-10-11 21:04:35

by Greg KH

[permalink] [raw]
Subject: [patch 10/67] Video: pvrusb2: Limit hor res for 24xxx devices


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

------------------
From: Mike Isely <[email protected]>

Currently it is not understood how to properly control the horizontal
capture resolution on 24xxx devices. The pvrusb2 driver is doing
everything it should (pass resolution paramter(s) to cx2341x and
cx25840 modules) but for some reason the result is corrupted video if
any resolution other than 720 is used. This patch causes the driver
to only permit a horizontal resolution of 720 to be used on 24xxx
devices. Even if the app requests something else, the driver will
force the resolution back to 720. This patch still allows full
control of the resolution for 29xxx devices.

Signed-off-by: Mike Isely <[email protected]>
Signed-off-by: Michael Krufky <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/media/video/pvrusb2/pvrusb2-ctrl.c | 21 +++++++++---
drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h | 2 +
drivers/media/video/pvrusb2/pvrusb2-hdw.c | 30 ++++++++++++++++++
drivers/media/video/pvrusb2/pvrusb2-v4l2.c | 34 +++++++++++----------
4 files changed, 65 insertions(+), 22 deletions(-)

--- linux-2.6.18.orig/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
+++ linux-2.6.18/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
@@ -43,12 +43,17 @@ int pvr2_ctrl_set_mask_value(struct pvr2
if (cptr->info->type == pvr2_ctl_bitmask) {
mask &= cptr->info->def.type_bitmask.valid_bits;
} else if (cptr->info->type == pvr2_ctl_int) {
- if (val < cptr->info->def.type_int.min_value) {
- break;
+ int lim;
+ lim = cptr->info->def.type_int.min_value;
+ if (cptr->info->get_min_value) {
+ cptr->info->get_min_value(cptr,&lim);
}
- if (val > cptr->info->def.type_int.max_value) {
- break;
+ if (val < lim) break;
+ lim = cptr->info->def.type_int.max_value;
+ if (cptr->info->get_max_value) {
+ cptr->info->get_max_value(cptr,&lim);
}
+ if (val > lim) break;
} else if (cptr->info->type == pvr2_ctl_enum) {
if (val >= cptr->info->def.type_enum.count) {
break;
@@ -91,7 +96,9 @@ int pvr2_ctrl_get_max(struct pvr2_ctrl *
int ret = 0;
if (!cptr) return 0;
LOCK_TAKE(cptr->hdw->big_lock); do {
- if (cptr->info->type == pvr2_ctl_int) {
+ if (cptr->info->get_max_value) {
+ cptr->info->get_max_value(cptr,&ret);
+ } else if (cptr->info->type == pvr2_ctl_int) {
ret = cptr->info->def.type_int.max_value;
}
} while(0); LOCK_GIVE(cptr->hdw->big_lock);
@@ -105,7 +112,9 @@ int pvr2_ctrl_get_min(struct pvr2_ctrl *
int ret = 0;
if (!cptr) return 0;
LOCK_TAKE(cptr->hdw->big_lock); do {
- if (cptr->info->type == pvr2_ctl_int) {
+ if (cptr->info->get_min_value) {
+ cptr->info->get_min_value(cptr,&ret);
+ } else if (cptr->info->type == pvr2_ctl_int) {
ret = cptr->info->def.type_int.min_value;
}
} while(0); LOCK_GIVE(cptr->hdw->big_lock);
--- linux-2.6.18.orig/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
+++ linux-2.6.18/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
@@ -107,6 +107,8 @@ struct pvr2_ctl_info {

/* Control's implementation */
pvr2_ctlf_get_value get_value; /* Get its value */
+ pvr2_ctlf_get_value get_min_value; /* Get minimum allowed value */
+ pvr2_ctlf_get_value get_max_value; /* Get maximum allowed value */
pvr2_ctlf_set_value set_value; /* Set its value */
pvr2_ctlf_val_to_sym val_to_sym; /* Custom convert value->symbol */
pvr2_ctlf_sym_to_val sym_to_val; /* Custom convert symbol->value */
--- linux-2.6.18.orig/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ linux-2.6.18/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -362,6 +362,30 @@ static int ctrl_freq_set(struct pvr2_ctr
return 0;
}

+#ifdef CONFIG_VIDEO_PVRUSB2_24XXX
+static int ctrl_hres_max_get(struct pvr2_ctrl *cptr,int *vp)
+{
+ /* If we're dealing with a 24xxx device, force the horizontal
+ maximum to be 720 no matter what, since we can't get the device
+ to work properly with any other value. Otherwise just return
+ the normal value. */
+ *vp = cptr->info->def.type_int.max_value;
+ if (cptr->hdw->hdw_type == PVR2_HDW_TYPE_24XXX) *vp = 720;
+ return 0;
+}
+
+static int ctrl_hres_min_get(struct pvr2_ctrl *cptr,int *vp)
+{
+ /* If we're dealing with a 24xxx device, force the horizontal
+ minimum to be 720 no matter what, since we can't get the device
+ to work properly with any other value. Otherwise just return
+ the normal value. */
+ *vp = cptr->info->def.type_int.min_value;
+ if (cptr->hdw->hdw_type == PVR2_HDW_TYPE_24XXX) *vp = 720;
+ return 0;
+}
+#endif
+
static int ctrl_cx2341x_is_dirty(struct pvr2_ctrl *cptr)
{
return cptr->hdw->enc_stale != 0;
@@ -720,6 +744,12 @@ static const struct pvr2_ctl_info contro
.default_value = 720,
DEFREF(res_hor),
DEFINT(320,720),
+#ifdef CONFIG_VIDEO_PVRUSB2_24XXX
+ /* Hook in check for clamp on horizontal resolution in
+ order to avoid unsolved problem involving cx25840. */
+ .get_max_value = ctrl_hres_max_get,
+ .get_min_value = ctrl_hres_min_get,
+#endif
},{
.desc = "Vertical capture resolution",
.name = "resolution_ver",
--- linux-2.6.18.orig/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ linux-2.6.18/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -456,18 +456,26 @@ static int pvr2_v4l2_do_ioctl(struct ino
ret = 0;
switch(vf->type) {
case V4L2_BUF_TYPE_VIDEO_CAPTURE: {
+ int lmin,lmax;
+ struct pvr2_ctrl *hcp,*vcp;
int h = vf->fmt.pix.height;
int w = vf->fmt.pix.width;
+ hcp = pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_HRES);
+ vcp = pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_VRES);

- if (h < 200) {
- h = 200;
- } else if (h > 625) {
- h = 625;
+ lmin = pvr2_ctrl_get_min(hcp);
+ lmax = pvr2_ctrl_get_max(hcp);
+ if (w < lmin) {
+ w = lmin;
+ } else if (w > lmax) {
+ w = lmax;
}
- if (w < 320) {
- w = 320;
- } else if (w > 720) {
- w = 720;
+ lmin = pvr2_ctrl_get_min(vcp);
+ lmax = pvr2_ctrl_get_max(vcp);
+ if (h < lmin) {
+ h = lmin;
+ } else if (h > lmax) {
+ h = lmax;
}

memcpy(vf, &pvr_format[PVR_FORMAT_PIX],
@@ -476,14 +484,8 @@ static int pvr2_v4l2_do_ioctl(struct ino
vf->fmt.pix.height = h;

if (cmd == VIDIOC_S_FMT) {
- pvr2_ctrl_set_value(
- pvr2_hdw_get_ctrl_by_id(hdw,
- PVR2_CID_HRES),
- vf->fmt.pix.width);
- pvr2_ctrl_set_value(
- pvr2_hdw_get_ctrl_by_id(hdw,
- PVR2_CID_VRES),
- vf->fmt.pix.height);
+ pvr2_ctrl_set_value(hcp,vf->fmt.pix.width);
+ pvr2_ctrl_set_value(vcp,vf->fmt.pix.height);
}
} break;
case V4L2_BUF_TYPE_VBI_CAPTURE:

--

2006-10-11 21:07:00

by Greg KH

[permalink] [raw]
Subject: [patch 25/67] Fix make headers_check on sh


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

------------------
From: Paul Mundt <[email protected]>

Cleanup for user headers, as noted:

asm-sh/page.h requires asm-generic/memory_model.h, which does not exist in exported headers
asm-sh/ptrace.h requires asm/ubc.h, which does not exist in exported headers

Signed-off-by: Paul Mundt <[email protected]>
Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/sh/kernel/process.c | 1 +
include/asm-sh/page.h | 3 +--
include/asm-sh/ptrace.h | 2 --
3 files changed, 2 insertions(+), 4 deletions(-)

--- linux-2.6.18.orig/arch/sh/kernel/process.c
+++ linux-2.6.18/arch/sh/kernel/process.c
@@ -26,6 +26,7 @@
#include <asm/uaccess.h>
#include <asm/mmu_context.h>
#include <asm/elf.h>
+#include <asm/ubc.h>

static int hlt_counter=0;

--- linux-2.6.18.orig/include/asm-sh/page.h
+++ linux-2.6.18/include/asm-sh/page.h
@@ -112,9 +112,8 @@ typedef struct { unsigned long pgprot; }
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)

-#endif /* __KERNEL__ */
-
#include <asm-generic/memory_model.h>
#include <asm-generic/page.h>

+#endif /* __KERNEL__ */
#endif /* __ASM_SH_PAGE_H */
--- linux-2.6.18.orig/include/asm-sh/ptrace.h
+++ linux-2.6.18/include/asm-sh/ptrace.h
@@ -1,8 +1,6 @@
#ifndef __ASM_SH_PTRACE_H
#define __ASM_SH_PTRACE_H

-#include <asm/ubc.h>
-
/*
* Copyright (C) 1999, 2000 Niibe Yutaka
*

--

2006-10-11 21:06:24

by Greg KH

[permalink] [raw]
Subject: [patch 24/67] Fix ARM make headers_check


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

------------------
From: David Woodhouse <[email protected]>

Sanitise the ARM headers exported to userspace.

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-arm/elf.h | 18 ++++++++----------
include/asm-arm/page.h | 4 ++--
2 files changed, 10 insertions(+), 12 deletions(-)

--- linux-2.6.18.orig/include/asm-arm/elf.h
+++ linux-2.6.18/include/asm-arm/elf.h
@@ -8,9 +8,6 @@

#include <asm/ptrace.h>
#include <asm/user.h>
-#ifdef __KERNEL
-#include <asm/procinfo.h>
-#endif

typedef unsigned long elf_greg_t;
typedef unsigned long elf_freg_t[3];
@@ -32,11 +29,6 @@ typedef elf_greg_t elf_gregset_t[ELF_NGR
typedef struct user_fp elf_fpregset_t;

/*
- * This is used to ensure we don't load something for the wrong architecture.
- */
-#define elf_check_arch(x) ( ((x)->e_machine == EM_ARM) && (ELF_PROC_OK((x))) )
-
-/*
* These are used to set parameters in the core dumps.
*/
#define ELF_CLASS ELFCLASS32
@@ -47,6 +39,14 @@ typedef struct user_fp elf_fpregset_t;
#endif
#define ELF_ARCH EM_ARM

+#ifdef __KERNEL__
+#include <asm/procinfo.h>
+
+/*
+ * This is used to ensure we don't load something for the wrong architecture.
+ */
+#define elf_check_arch(x) ( ((x)->e_machine == EM_ARM) && (ELF_PROC_OK((x))) )
+
#define USE_ELF_CORE_DUMP
#define ELF_EXEC_PAGESIZE 4096

@@ -83,8 +83,6 @@ typedef struct user_fp elf_fpregset_t;
extern char elf_platform[];
#define ELF_PLATFORM (elf_platform)

-#ifdef __KERNEL__
-
/*
* 32-bit code is always OK. Some cpus can do 26-bit, some can't.
*/
--- linux-2.6.18.orig/include/asm-arm/page.h
+++ linux-2.6.18/include/asm-arm/page.h
@@ -11,13 +11,13 @@
#define _ASMARM_PAGE_H


+#ifdef __KERNEL__
+
/* PAGE_SHIFT determines the page size */
#define PAGE_SHIFT 12
#define PAGE_SIZE (1UL << PAGE_SHIFT)
#define PAGE_MASK (~(PAGE_SIZE-1))

-#ifdef __KERNEL__
-
/* to align the pointer to the (next) page boundary */
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)


--

2006-10-11 21:05:52

by Greg KH

[permalink] [raw]
Subject: [patch 15/67] ALSA: Fix initiailization of user-space controls


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

------------------
From: Takashi Iwai <[email protected]>

ALSA: Fix initiailization of user-space controls

Fix an assertion when accessing a user-defined control due to lack of
initialization (appears only when CONFIG_SND_DEBUg is enabled).

ALSA sound/core/control.c:660: BUG? (info->access == 0)

Signed-off-by: Takashi Iwai <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
sound/core/control.c | 1 +
1 file changed, 1 insertion(+)

--- linux-2.6.18.orig/sound/core/control.c
+++ linux-2.6.18/sound/core/control.c
@@ -997,6 +997,7 @@ static int snd_ctl_elem_add(struct snd_c
if (ue == NULL)
return -ENOMEM;
ue->info = *info;
+ ue->info.access = 0;
ue->elem_data = (char *)ue + sizeof(*ue);
ue->elem_data_size = private_size;
kctl.private_free = snd_ctl_elem_user_free;

--

2006-10-11 21:07:00

by Greg KH

[permalink] [raw]
Subject: [patch 29/67] Fix m68knommu exported headers


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

------------------
From: David Woodhouse <[email protected]>

Just clean up asm/page.h

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-m68knommu/page.h | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

--- linux-2.6.18.orig/include/asm-m68knommu/page.h
+++ linux-2.6.18/include/asm-m68knommu/page.h
@@ -1,6 +1,7 @@
#ifndef _M68KNOMMU_PAGE_H
#define _M68KNOMMU_PAGE_H

+#ifdef __KERNEL__

/* PAGE_SHIFT determines the page size */

@@ -8,8 +9,6 @@
#define PAGE_SIZE (1UL << PAGE_SHIFT)
#define PAGE_MASK (~(PAGE_SIZE-1))

-#ifdef __KERNEL__
-
#include <asm/setup.h>

#ifndef __ASSEMBLY__
@@ -76,8 +75,8 @@ extern unsigned long memory_end;

#endif /* __ASSEMBLY__ */

-#endif /* __KERNEL__ */
-
#include <asm-generic/page.h>

+#endif /* __KERNEL__ */
+
#endif /* _M68KNOMMU_PAGE_H */

--

2006-10-11 21:06:32

by Greg KH

[permalink] [raw]
Subject: [patch 23/67] One line per header in Kbuild files to reduce conflicts


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

------------------
From: David Woodhouse <[email protected]>

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/Kbuild | 11
include/asm-alpha/Kbuild | 10
include/asm-generic/Kbuild | 15 +
include/asm-generic/Kbuild.asm | 38 ++-
include/asm-i386/Kbuild | 9
include/asm-ia64/Kbuild | 18 +
include/asm-powerpc/Kbuild | 45 +++
include/asm-s390/Kbuild | 11
include/asm-sparc/Kbuild | 24 +-
include/asm-sparc64/Kbuild | 27 +-
include/asm-x86_64/Kbuild | 18 +
include/linux/Kbuild | 400 ++++++++++++++++++++++++++++------
include/linux/byteorder/Kbuild | 9
include/linux/dvb/Kbuild | 11
include/linux/netfilter/Kbuild | 47 +++
include/linux/netfilter_arp/Kbuild | 5
include/linux/netfilter_bridge/Kbuild | 21 +
include/linux/netfilter_ipv4/Kbuild | 82 +++++-
include/linux/netfilter_ipv6/Kbuild | 27 +-
include/linux/nfsd/Kbuild | 9
include/linux/raid/Kbuild | 3
include/linux/sunrpc/Kbuild | 2
include/linux/tc_act/Kbuild | 5
include/linux/tc_ematch/Kbuild | 5
include/mtd/Kbuild | 8
include/rdma/Kbuild | 2
include/scsi/Kbuild | 4
include/sound/Kbuild | 12 -
include/video/Kbuild | 2
29 files changed, 721 insertions(+), 159 deletions(-)

--- linux-2.6.18.orig/include/Kbuild
+++ linux-2.6.18/include/Kbuild
@@ -1,2 +1,9 @@
-header-y += asm-generic/ linux/ scsi/ sound/ mtd/ rdma/ video/
-header-y += asm-$(ARCH)/
+header-y += asm-generic/
+header-y += linux/
+header-y += scsi/
+header-y += sound/
+header-y += mtd/
+header-y += rdma/
+header-y += video/
+
+header-y += asm-$(ARCH)/
--- linux-2.6.18.orig/include/asm-alpha/Kbuild
+++ linux-2.6.18/include/asm-alpha/Kbuild
@@ -1,5 +1,11 @@
include include/asm-generic/Kbuild.asm

-unifdef-y += console.h fpu.h sysinfo.h compiler.h
+header-y += gentrap.h
+header-y += regdef.h
+header-y += pal.h
+header-y += reg.h

-header-y += gentrap.h regdef.h pal.h reg.h
+unifdef-y += console.h
+unifdef-y += fpu.h
+unifdef-y += sysinfo.h
+unifdef-y += compiler.h
--- linux-2.6.18.orig/include/asm-generic/Kbuild
+++ linux-2.6.18/include/asm-generic/Kbuild
@@ -1,3 +1,12 @@
-header-y += atomic.h errno-base.h errno.h fcntl.h ioctl.h ipc.h mman.h \
- signal.h statfs.h
-unifdef-y := resource.h siginfo.h
+header-y += atomic.h
+header-y += errno-base.h
+header-y += errno.h
+header-y += fcntl.h
+header-y += ioctl.h
+header-y += ipc.h
+header-y += mman.h
+header-y += signal.h
+header-y += statfs.h
+
+unifdef-y += resource.h
+unifdef-y += siginfo.h
--- linux-2.6.18.orig/include/asm-generic/Kbuild.asm
+++ linux-2.6.18/include/asm-generic/Kbuild.asm
@@ -1,8 +1,34 @@
-unifdef-y += a.out.h auxvec.h byteorder.h errno.h fcntl.h ioctl.h \
- ioctls.h ipcbuf.h mman.h msgbuf.h param.h poll.h \
- posix_types.h ptrace.h resource.h sembuf.h shmbuf.h shmparam.h \
- sigcontext.h siginfo.h signal.h socket.h sockios.h stat.h \
- statfs.h termbits.h termios.h types.h unistd.h user.h
+unifdef-y += a.out.h
+unifdef-y += auxvec.h
+unifdef-y += byteorder.h
+unifdef-y += errno.h
+unifdef-y += fcntl.h
+unifdef-y += ioctl.h
+unifdef-y += ioctls.h
+unifdef-y += ipcbuf.h
+unifdef-y += mman.h
+unifdef-y += msgbuf.h
+unifdef-y += param.h
+unifdef-y += poll.h
+unifdef-y += posix_types.h
+unifdef-y += ptrace.h
+unifdef-y += resource.h
+unifdef-y += sembuf.h
+unifdef-y += shmbuf.h
+unifdef-y += sigcontext.h
+unifdef-y += siginfo.h
+unifdef-y += signal.h
+unifdef-y += socket.h
+unifdef-y += sockios.h
+unifdef-y += stat.h
+unifdef-y += statfs.h
+unifdef-y += termbits.h
+unifdef-y += termios.h
+unifdef-y += types.h
+unifdef-y += unistd.h
+unifdef-y += user.h

# These probably shouldn't be exported
-unifdef-y += elf.h page.h
+unifdef-y += shmparam.h
+unifdef-y += elf.h
+unifdef-y += page.h
--- linux-2.6.18.orig/include/asm-i386/Kbuild
+++ linux-2.6.18/include/asm-i386/Kbuild
@@ -1,5 +1,10 @@
include include/asm-generic/Kbuild.asm

-header-y += boot.h debugreg.h ldt.h ucontext.h
+header-y += boot.h
+header-y += debugreg.h
+header-y += ldt.h
+header-y += ucontext.h

-unifdef-y += mtrr.h setup.h vm86.h
+unifdef-y += mtrr.h
+unifdef-y += setup.h
+unifdef-y += vm86.h
--- linux-2.6.18.orig/include/asm-ia64/Kbuild
+++ linux-2.6.18/include/asm-ia64/Kbuild
@@ -1,7 +1,17 @@
include include/asm-generic/Kbuild.asm

-header-y += break.h fpu.h fpswa.h gcc_intrin.h ia64regs.h \
- intel_intrin.h intrinsics.h perfmon_default_smpl.h \
- ptrace_offsets.h rse.h setup.h ucontext.h
+header-y += break.h
+header-y += fpu.h
+header-y += fpswa.h
+header-y += gcc_intrin.h
+header-y += ia64regs.h
+header-y += intel_intrin.h
+header-y += intrinsics.h
+header-y += perfmon_default_smpl.h
+header-y += ptrace_offsets.h
+header-y += rse.h
+header-y += setup.h
+header-y += ucontext.h

-unifdef-y += perfmon.h ustack.h
+unifdef-y += perfmon.h
+unifdef-y += ustack.h
--- linux-2.6.18.orig/include/asm-powerpc/Kbuild
+++ linux-2.6.18/include/asm-powerpc/Kbuild
@@ -1,10 +1,41 @@
include include/asm-generic/Kbuild.asm

-unifdef-y += a.out.h asm-compat.h bootx.h byteorder.h cputable.h elf.h \
- nvram.h param.h posix_types.h ptrace.h seccomp.h signal.h \
- termios.h types.h unistd.h
+header-y += auxvec.h
+header-y += ioctls.h
+header-y += mman.h
+header-y += sembuf.h
+header-y += siginfo.h
+header-y += stat.h
+header-y += errno.h
+header-y += ipcbuf.h
+header-y += msgbuf.h
+header-y += shmbuf.h
+header-y += socket.h
+header-y += termbits.h
+header-y += fcntl.h
+header-y += ipc.h
+header-y += poll.h
+header-y += shmparam.h
+header-y += sockios.h
+header-y += ucontext.h
+header-y += ioctl.h
+header-y += linkage.h
+header-y += resource.h
+header-y += sigcontext.h
+header-y += statfs.h

-header-y += auxvec.h ioctls.h mman.h sembuf.h siginfo.h stat.h errno.h \
- ipcbuf.h msgbuf.h shmbuf.h socket.h termbits.h fcntl.h ipc.h \
- poll.h shmparam.h sockios.h ucontext.h ioctl.h linkage.h \
- resource.h sigcontext.h statfs.h
+unifdef-y += a.out.h
+unifdef-y += asm-compat.h
+unifdef-y += bootx.h
+unifdef-y += byteorder.h
+unifdef-y += cputable.h
+unifdef-y += elf.h
+unifdef-y += nvram.h
+unifdef-y += param.h
+unifdef-y += posix_types.h
+unifdef-y += ptrace.h
+unifdef-y += seccomp.h
+unifdef-y += signal.h
+unifdef-y += termios.h
+unifdef-y += types.h
+unifdef-y += unistd.h
--- linux-2.6.18.orig/include/asm-s390/Kbuild
+++ linux-2.6.18/include/asm-s390/Kbuild
@@ -1,4 +1,11 @@
include include/asm-generic/Kbuild.asm

-unifdef-y += cmb.h debug.h
-header-y += dasd.h qeth.h tape390.h ucontext.h vtoc.h z90crypt.h
+header-y += dasd.h
+header-y += qeth.h
+header-y += tape390.h
+header-y += ucontext.h
+header-y += vtoc.h
+header-y += z90crypt.h
+
+unifdef-y += cmb.h
+unifdef-y += debug.h
--- linux-2.6.18.orig/include/asm-sparc/Kbuild
+++ linux-2.6.18/include/asm-sparc/Kbuild
@@ -1,6 +1,22 @@
include include/asm-generic/Kbuild.asm

-unifdef-y += fbio.h perfctr.h psr.h
-header-y += apc.h asi.h auxio.h bpp.h head.h ipc.h jsflash.h \
- openpromio.h pbm.h pconf.h pgtsun4.h reg.h traps.h \
- turbosparc.h vfc_ioctls.h winmacro.h
+header-y += apc.h
+header-y += asi.h
+header-y += auxio.h
+header-y += bpp.h
+header-y += head.h
+header-y += ipc.h
+header-y += jsflash.h
+header-y += openpromio.h
+header-y += pbm.h
+header-y += pconf.h
+header-y += pgtsun4.h
+header-y += reg.h
+header-y += traps.h
+header-y += turbosparc.h
+header-y += vfc_ioctls.h
+header-y += winmacro.h
+
+unifdef-y += fbio.h
+unifdef-y += perfctr.h
+unifdef-y += psr.h
--- linux-2.6.18.orig/include/asm-sparc64/Kbuild
+++ linux-2.6.18/include/asm-sparc64/Kbuild
@@ -4,7 +4,26 @@ ALTARCH := sparc
ARCHDEF := defined __sparc__ && defined __arch64__
ALTARCHDEF := defined __sparc__ && !defined __arch64__

-unifdef-y += fbio.h perfctr.h
-header-y += apb.h asi.h bbc.h bpp.h display7seg.h envctrl.h floppy.h \
- ipc.h kdebug.h mostek.h openprom.h openpromio.h parport.h \
- pconf.h psrcompat.h pstate.h reg.h uctx.h utrap.h watchdog.h
+header-y += apb.h
+header-y += asi.h
+header-y += bbc.h
+header-y += bpp.h
+header-y += display7seg.h
+header-y += envctrl.h
+header-y += floppy.h
+header-y += ipc.h
+header-y += kdebug.h
+header-y += mostek.h
+header-y += openprom.h
+header-y += openpromio.h
+header-y += parport.h
+header-y += pconf.h
+header-y += psrcompat.h
+header-y += pstate.h
+header-y += reg.h
+header-y += uctx.h
+header-y += utrap.h
+header-y += watchdog.h
+
+unifdef-y += fbio.h
+unifdef-y += perfctr.h
--- linux-2.6.18.orig/include/asm-x86_64/Kbuild
+++ linux-2.6.18/include/asm-x86_64/Kbuild
@@ -4,8 +4,18 @@ ALTARCH := i386
ARCHDEF := defined __x86_64__
ALTARCHDEF := defined __i386__

-header-y += boot.h bootsetup.h cpufeature.h debugreg.h ldt.h \
- msr.h prctl.h setup.h sigcontext32.h ucontext.h \
- vsyscall32.h
+header-y += boot.h
+header-y += bootsetup.h
+header-y += cpufeature.h
+header-y += debugreg.h
+header-y += ldt.h
+header-y += msr.h
+header-y += prctl.h
+header-y += setup.h
+header-y += sigcontext32.h
+header-y += ucontext.h
+header-y += vsyscall32.h

-unifdef-y += mce.h mtrr.h vsyscall.h
+unifdef-y += mce.h
+unifdef-y += mtrr.h
+unifdef-y += vsyscall.h
--- linux-2.6.18.orig/include/linux/Kbuild
+++ linux-2.6.18/include/linux/Kbuild
@@ -1,63 +1,343 @@
-header-y := byteorder/ dvb/ hdlc/ isdn/ nfsd/ raid/ sunrpc/ tc_act/ \
- netfilter/ netfilter_arp/ netfilter_bridge/ netfilter_ipv4/ \
- netfilter_ipv6/
+header-y += byteorder/
+header-y += dvb/
+header-y += hdlc/
+header-y += isdn/
+header-y += nfsd/
+header-y += raid/
+header-y += sunrpc/
+header-y += tc_act/
+header-y += netfilter/
+header-y += netfilter_arp/
+header-y += netfilter_bridge/
+header-y += netfilter_ipv4/
+header-y += netfilter_ipv6/

-header-y += affs_fs.h affs_hardblocks.h aio_abi.h a.out.h arcfb.h \
- atmapi.h atmbr2684.h atmclip.h atm_eni.h atm_he.h \
- atm_idt77105.h atmioc.h atmlec.h atmmpc.h atm_nicstar.h \
- atmppp.h atmsap.h atmsvc.h atm_zatm.h auto_fs4.h auxvec.h \
- awe_voice.h ax25.h b1lli.h baycom.h bfs_fs.h blkpg.h \
- bpqether.h cdk.h chio.h coda_psdev.h coff.h comstats.h \
- consolemap.h cycx_cfm.h dm-ioctl.h dn.h dqblk_v1.h \
- dqblk_v2.h dqblk_xfs.h efs_fs_sb.h elf-fdpic.h elf.h elf-em.h \
- fadvise.h fd.h fdreg.h ftape-header-segment.h ftape-vendors.h \
- fuse.h futex.h genetlink.h gen_stats.h gigaset_dev.h hdsmart.h \
- hpfs_fs.h hysdn_if.h i2c-dev.h i8k.h icmp.h \
- if_arcnet.h if_arp.h if_bonding.h if_cablemodem.h if_fc.h \
- if_fddi.h if.h if_hippi.h if_infiniband.h if_packet.h \
- if_plip.h if_ppp.h if_slip.h if_strip.h if_tunnel.h in6.h \
- in_route.h ioctl.h ip.h ipmi_msgdefs.h ip_mp_alg.h ipsec.h \
- ipx.h irda.h isdn_divertif.h iso_fs.h ite_gpio.h ixjuser.h \
- jffs2.h keyctl.h limits.h major.h matroxfb.h meye.h minix_fs.h \
- mmtimer.h mqueue.h mtio.h ncp_no.h netfilter_arp.h netrom.h \
- nfs2.h nfs4_mount.h nfs_mount.h openprom_fs.h param.h \
- pci_ids.h pci_regs.h personality.h pfkeyv2.h pg.h pkt_cls.h \
- pkt_sched.h posix_types.h ppdev.h prctl.h ps2esdi.h qic117.h \
- qnxtypes.h quotaio_v1.h quotaio_v2.h radeonfb.h raw.h \
- resource.h rose.h sctp.h smbno.h snmp.h sockios.h som.h \
- sound.h stddef.h synclink.h telephony.h termios.h ticable.h \
- times.h tiocl.h tipc.h toshiba.h ultrasound.h un.h utime.h \
- utsname.h video_decoder.h video_encoder.h videotext.h vt.h \
- wavefront.h wireless.h xattr.h x25.h zorro_ids.h
+header-y += affs_fs.h
+header-y += affs_hardblocks.h
+header-y += aio_abi.h
+header-y += a.out.h
+header-y += arcfb.h
+header-y += atmapi.h
+header-y += atmbr2684.h
+header-y += atmclip.h
+header-y += atm_eni.h
+header-y += atm_he.h
+header-y += atm_idt77105.h
+header-y += atmioc.h
+header-y += atmlec.h
+header-y += atmmpc.h
+header-y += atm_nicstar.h
+header-y += atmppp.h
+header-y += atmsap.h
+header-y += atmsvc.h
+header-y += atm_zatm.h
+header-y += auto_fs4.h
+header-y += auxvec.h
+header-y += awe_voice.h
+header-y += ax25.h
+header-y += b1lli.h
+header-y += baycom.h
+header-y += bfs_fs.h
+header-y += blkpg.h
+header-y += bpqether.h
+header-y += cdk.h
+header-y += chio.h
+header-y += coda_psdev.h
+header-y += coff.h
+header-y += comstats.h
+header-y += consolemap.h
+header-y += cycx_cfm.h
+header-y += dm-ioctl.h
+header-y += dn.h
+header-y += dqblk_v1.h
+header-y += dqblk_v2.h
+header-y += dqblk_xfs.h
+header-y += efs_fs_sb.h
+header-y += elf-fdpic.h
+header-y += elf.h
+header-y += elf-em.h
+header-y += fadvise.h
+header-y += fd.h
+header-y += fdreg.h
+header-y += ftape-header-segment.h
+header-y += ftape-vendors.h
+header-y += fuse.h
+header-y += futex.h
+header-y += genetlink.h
+header-y += gen_stats.h
+header-y += gigaset_dev.h
+header-y += hdsmart.h
+header-y += hpfs_fs.h
+header-y += hysdn_if.h
+header-y += i2c-dev.h
+header-y += i8k.h
+header-y += icmp.h
+header-y += if_arcnet.h
+header-y += if_arp.h
+header-y += if_bonding.h
+header-y += if_cablemodem.h
+header-y += if_fc.h
+header-y += if_fddi.h
+header-y += if.h
+header-y += if_hippi.h
+header-y += if_infiniband.h
+header-y += if_packet.h
+header-y += if_plip.h
+header-y += if_ppp.h
+header-y += if_slip.h
+header-y += if_strip.h
+header-y += if_tunnel.h
+header-y += in6.h
+header-y += in_route.h
+header-y += ioctl.h
+header-y += ip.h
+header-y += ipmi_msgdefs.h
+header-y += ip_mp_alg.h
+header-y += ipsec.h
+header-y += ipx.h
+header-y += irda.h
+header-y += isdn_divertif.h
+header-y += iso_fs.h
+header-y += ite_gpio.h
+header-y += ixjuser.h
+header-y += jffs2.h
+header-y += keyctl.h
+header-y += limits.h
+header-y += major.h
+header-y += matroxfb.h
+header-y += meye.h
+header-y += minix_fs.h
+header-y += mmtimer.h
+header-y += mqueue.h
+header-y += mtio.h
+header-y += ncp_no.h
+header-y += netfilter_arp.h
+header-y += netrom.h
+header-y += nfs2.h
+header-y += nfs4_mount.h
+header-y += nfs_mount.h
+header-y += openprom_fs.h
+header-y += param.h
+header-y += pci_ids.h
+header-y += pci_regs.h
+header-y += personality.h
+header-y += pfkeyv2.h
+header-y += pg.h
+header-y += pkt_cls.h
+header-y += pkt_sched.h
+header-y += posix_types.h
+header-y += ppdev.h
+header-y += prctl.h
+header-y += ps2esdi.h
+header-y += qic117.h
+header-y += qnxtypes.h
+header-y += quotaio_v1.h
+header-y += quotaio_v2.h
+header-y += radeonfb.h
+header-y += raw.h
+header-y += resource.h
+header-y += rose.h
+header-y += sctp.h
+header-y += smbno.h
+header-y += snmp.h
+header-y += sockios.h
+header-y += som.h
+header-y += sound.h
+header-y += stddef.h
+header-y += synclink.h
+header-y += telephony.h
+header-y += termios.h
+header-y += ticable.h
+header-y += times.h
+header-y += tiocl.h
+header-y += tipc.h
+header-y += toshiba.h
+header-y += ultrasound.h
+header-y += un.h
+header-y += utime.h
+header-y += utsname.h
+header-y += video_decoder.h
+header-y += video_encoder.h
+header-y += videotext.h
+header-y += vt.h
+header-y += wavefront.h
+header-y += wireless.h
+header-y += xattr.h
+header-y += x25.h
+header-y += zorro_ids.h

-unifdef-y += acct.h adb.h adfs_fs.h agpgart.h apm_bios.h atalk.h \
- atmarp.h atmdev.h atm.h atm_tcp.h audit.h auto_fs.h binfmts.h \
- capability.h capi.h cciss_ioctl.h cdrom.h cm4000_cs.h \
- cn_proc.h coda.h connector.h cramfs_fs.h cuda.h cyclades.h \
- dccp.h dirent.h divert.h elfcore.h errno.h errqueue.h \
- ethtool.h eventpoll.h ext2_fs.h ext3_fs.h fb.h fcntl.h \
- filter.h flat.h fs.h ftape.h gameport.h generic_serial.h \
- genhd.h hayesesp.h hdlcdrv.h hdlc.h hdreg.h hiddev.h hpet.h \
- i2c.h i2o-dev.h icmpv6.h if_bridge.h if_ec.h \
- if_eql.h if_ether.h if_frad.h if_ltalk.h if_pppox.h \
- if_shaper.h if_tr.h if_tun.h if_vlan.h if_wanpipe.h igmp.h \
- inet_diag.h in.h inotify.h input.h ipc.h ipmi.h ipv6.h \
- ipv6_route.h isdn.h isdnif.h isdn_ppp.h isicom.h jbd.h \
- joystick.h kdev_t.h kd.h kernelcapi.h kernel.h keyboard.h \
- llc.h loop.h lp.h mempolicy.h mii.h mman.h mroute.h msdos_fs.h \
- msg.h nbd.h ncp_fs.h ncp.h ncp_mount.h netdevice.h \
- netfilter_bridge.h netfilter_decnet.h netfilter.h \
- netfilter_ipv4.h netfilter_ipv6.h netfilter_logging.h net.h \
- netlink.h nfs3.h nfs4.h nfsacl.h nfs_fs.h nfs.h nfs_idmap.h \
- n_r3964.h nubus.h nvram.h parport.h patchkey.h pci.h pktcdvd.h \
- pmu.h poll.h ppp_defs.h ppp-comp.h ptrace.h qnx4_fs.h quota.h \
- random.h reboot.h reiserfs_fs.h reiserfs_xattr.h romfs_fs.h \
- route.h rtc.h rtnetlink.h scc.h sched.h sdla.h \
- selinux_netlink.h sem.h serial_core.h serial.h serio.h shm.h \
- signal.h smb_fs.h smb.h smb_mount.h socket.h sonet.h sonypi.h \
- soundcard.h stat.h sysctl.h tcp.h time.h timex.h tty.h types.h \
- udf_fs_i.h udp.h uinput.h uio.h unistd.h usb_ch9.h \
- usbdevice_fs.h user.h videodev2.h videodev.h wait.h \
- wanrouter.h watchdog.h xfrm.h zftape.h
+unifdef-y += acct.h
+unifdef-y += adb.h
+unifdef-y += adfs_fs.h
+unifdef-y += agpgart.h
+unifdef-y += apm_bios.h
+unifdef-y += atalk.h
+unifdef-y += atmarp.h
+unifdef-y += atmdev.h
+unifdef-y += atm.h
+unifdef-y += atm_tcp.h
+unifdef-y += audit.h
+unifdef-y += auto_fs.h
+unifdef-y += binfmts.h
+unifdef-y += capability.h
+unifdef-y += capi.h
+unifdef-y += cciss_ioctl.h
+unifdef-y += cdrom.h
+unifdef-y += cm4000_cs.h
+unifdef-y += cn_proc.h
+unifdef-y += coda.h
+unifdef-y += connector.h
+unifdef-y += cramfs_fs.h
+unifdef-y += cuda.h
+unifdef-y += cyclades.h
+unifdef-y += dccp.h
+unifdef-y += dirent.h
+unifdef-y += divert.h
+unifdef-y += elfcore.h
+unifdef-y += errno.h
+unifdef-y += errqueue.h
+unifdef-y += ethtool.h
+unifdef-y += eventpoll.h
+unifdef-y += ext2_fs.h
+unifdef-y += ext3_fs.h
+unifdef-y += fb.h
+unifdef-y += fcntl.h
+unifdef-y += filter.h
+unifdef-y += flat.h
+unifdef-y += fs.h
+unifdef-y += ftape.h
+unifdef-y += gameport.h
+unifdef-y += generic_serial.h
+unifdef-y += genhd.h
+unifdef-y += hayesesp.h
+unifdef-y += hdlcdrv.h
+unifdef-y += hdlc.h
+unifdef-y += hdreg.h
+unifdef-y += hiddev.h
+unifdef-y += hpet.h
+unifdef-y += i2c.h
+unifdef-y += i2o-dev.h
+unifdef-y += icmpv6.h
+unifdef-y += if_bridge.h
+unifdef-y += if_ec.h
+unifdef-y += if_eql.h
+unifdef-y += if_ether.h
+unifdef-y += if_frad.h
+unifdef-y += if_ltalk.h
+unifdef-y += if_pppox.h
+unifdef-y += if_shaper.h
+unifdef-y += if_tr.h
+unifdef-y += if_tun.h
+unifdef-y += if_vlan.h
+unifdef-y += if_wanpipe.h
+unifdef-y += igmp.h
+unifdef-y += inet_diag.h
+unifdef-y += in.h
+unifdef-y += inotify.h
+unifdef-y += input.h
+unifdef-y += ipc.h
+unifdef-y += ipmi.h
+unifdef-y += ipv6.h
+unifdef-y += ipv6_route.h
+unifdef-y += isdn.h
+unifdef-y += isdnif.h
+unifdef-y += isdn_ppp.h
+unifdef-y += isicom.h
+unifdef-y += jbd.h
+unifdef-y += joystick.h
+unifdef-y += kdev_t.h
+unifdef-y += kd.h
+unifdef-y += kernelcapi.h
+unifdef-y += kernel.h
+unifdef-y += keyboard.h
+unifdef-y += llc.h
+unifdef-y += loop.h
+unifdef-y += lp.h
+unifdef-y += mempolicy.h
+unifdef-y += mii.h
+unifdef-y += mman.h
+unifdef-y += mroute.h
+unifdef-y += msdos_fs.h
+unifdef-y += msg.h
+unifdef-y += nbd.h
+unifdef-y += ncp_fs.h
+unifdef-y += ncp.h
+unifdef-y += ncp_mount.h
+unifdef-y += netdevice.h
+unifdef-y += netfilter_bridge.h
+unifdef-y += netfilter_decnet.h
+unifdef-y += netfilter.h
+unifdef-y += netfilter_ipv4.h
+unifdef-y += netfilter_ipv6.h
+unifdef-y += netfilter_logging.h
+unifdef-y += net.h
+unifdef-y += netlink.h
+unifdef-y += nfs3.h
+unifdef-y += nfs4.h
+unifdef-y += nfsacl.h
+unifdef-y += nfs_fs.h
+unifdef-y += nfs.h
+unifdef-y += nfs_idmap.h
+unifdef-y += n_r3964.h
+unifdef-y += nubus.h
+unifdef-y += nvram.h
+unifdef-y += parport.h
+unifdef-y += patchkey.h
+unifdef-y += pci.h
+unifdef-y += pktcdvd.h
+unifdef-y += pmu.h
+unifdef-y += poll.h
+unifdef-y += ppp_defs.h
+unifdef-y += ppp-comp.h
+unifdef-y += ptrace.h
+unifdef-y += qnx4_fs.h
+unifdef-y += quota.h
+unifdef-y += random.h
+unifdef-y += reboot.h
+unifdef-y += reiserfs_fs.h
+unifdef-y += reiserfs_xattr.h
+unifdef-y += romfs_fs.h
+unifdef-y += route.h
+unifdef-y += rtc.h
+unifdef-y += rtnetlink.h
+unifdef-y += scc.h
+unifdef-y += sched.h
+unifdef-y += sdla.h
+unifdef-y += selinux_netlink.h
+unifdef-y += sem.h
+unifdef-y += serial_core.h
+unifdef-y += serial.h
+unifdef-y += serio.h
+unifdef-y += shm.h
+unifdef-y += signal.h
+unifdef-y += smb_fs.h
+unifdef-y += smb.h
+unifdef-y += smb_mount.h
+unifdef-y += socket.h
+unifdef-y += sonet.h
+unifdef-y += sonypi.h
+unifdef-y += soundcard.h
+unifdef-y += stat.h
+unifdef-y += sysctl.h
+unifdef-y += tcp.h
+unifdef-y += time.h
+unifdef-y += timex.h
+unifdef-y += tty.h
+unifdef-y += types.h
+unifdef-y += udf_fs_i.h
+unifdef-y += udp.h
+unifdef-y += uinput.h
+unifdef-y += uio.h
+unifdef-y += unistd.h
+unifdef-y += usb_ch9.h
+unifdef-y += usbdevice_fs.h
+unifdef-y += user.h
+unifdef-y += videodev2.h
+unifdef-y += videodev.h
+unifdef-y += wait.h
+unifdef-y += wanrouter.h
+unifdef-y += watchdog.h
+unifdef-y += xfrm.h
+unifdef-y += zftape.h

-objhdr-y := version.h
+objhdr-y += version.h
--- linux-2.6.18.orig/include/linux/byteorder/Kbuild
+++ linux-2.6.18/include/linux/byteorder/Kbuild
@@ -1,2 +1,7 @@
-unifdef-y += generic.h swabb.h swab.h
-header-y += big_endian.h little_endian.h pdp_endian.h
+header-y += big_endian.h
+header-y += little_endian.h
+header-y += pdp_endian.h
+
+unifdef-y += generic.h
+unifdef-y += swabb.h
+unifdef-y += swab.h
--- linux-2.6.18.orig/include/linux/dvb/Kbuild
+++ linux-2.6.18/include/linux/dvb/Kbuild
@@ -1,2 +1,9 @@
-header-y += ca.h frontend.h net.h osd.h version.h
-unifdef-y := audio.h dmx.h video.h
+header-y += ca.h
+header-y += frontend.h
+header-y += net.h
+header-y += osd.h
+header-y += version.h
+
+unifdef-y += audio.h
+unifdef-y += dmx.h
+unifdef-y += video.h
--- linux-2.6.18.orig/include/linux/netfilter/Kbuild
+++ linux-2.6.18/include/linux/netfilter/Kbuild
@@ -1,11 +1,38 @@
-header-y := nf_conntrack_sctp.h nf_conntrack_tuple_common.h \
- nfnetlink_conntrack.h nfnetlink_log.h nfnetlink_queue.h \
- xt_CLASSIFY.h xt_comment.h xt_connbytes.h xt_connmark.h \
- xt_CONNMARK.h xt_conntrack.h xt_dccp.h xt_esp.h \
- xt_helper.h xt_length.h xt_limit.h xt_mac.h xt_mark.h \
- xt_MARK.h xt_multiport.h xt_NFQUEUE.h xt_pkttype.h \
- xt_policy.h xt_realm.h xt_sctp.h xt_state.h xt_string.h \
- xt_tcpmss.h xt_tcpudp.h xt_SECMARK.h xt_CONNSECMARK.h
+header-y += nf_conntrack_sctp.h
+header-y += nf_conntrack_tuple_common.h
+header-y += nfnetlink_conntrack.h
+header-y += nfnetlink_log.h
+header-y += nfnetlink_queue.h
+header-y += xt_CLASSIFY.h
+header-y += xt_comment.h
+header-y += xt_connbytes.h
+header-y += xt_connmark.h
+header-y += xt_CONNMARK.h
+header-y += xt_conntrack.h
+header-y += xt_dccp.h
+header-y += xt_esp.h
+header-y += xt_helper.h
+header-y += xt_length.h
+header-y += xt_limit.h
+header-y += xt_mac.h
+header-y += xt_mark.h
+header-y += xt_MARK.h
+header-y += xt_multiport.h
+header-y += xt_NFQUEUE.h
+header-y += xt_pkttype.h
+header-y += xt_policy.h
+header-y += xt_realm.h
+header-y += xt_sctp.h
+header-y += xt_state.h
+header-y += xt_string.h
+header-y += xt_tcpmss.h
+header-y += xt_tcpudp.h
+header-y += xt_SECMARK.h
+header-y += xt_CONNSECMARK.h

-unifdef-y := nf_conntrack_common.h nf_conntrack_ftp.h \
- nf_conntrack_tcp.h nfnetlink.h x_tables.h xt_physdev.h
+unifdef-y += nf_conntrack_common.h
+unifdef-y += nf_conntrack_ftp.h
+unifdef-y += nf_conntrack_tcp.h
+unifdef-y += nfnetlink.h
+unifdef-y += x_tables.h
+unifdef-y += xt_physdev.h
--- linux-2.6.18.orig/include/linux/netfilter_arp/Kbuild
+++ linux-2.6.18/include/linux/netfilter_arp/Kbuild
@@ -1,2 +1,3 @@
-header-y := arpt_mangle.h
-unifdef-y := arp_tables.h
+header-y += arpt_mangle.h
+
+unifdef-y += arp_tables.h
--- linux-2.6.18.orig/include/linux/netfilter_bridge/Kbuild
+++ linux-2.6.18/include/linux/netfilter_bridge/Kbuild
@@ -1,4 +1,17 @@
-header-y += ebt_among.h ebt_arp.h ebt_arpreply.h ebt_ip.h ebt_limit.h \
- ebt_log.h ebt_mark_m.h ebt_mark_t.h ebt_nat.h ebt_pkttype.h \
- ebt_redirect.h ebt_stp.h ebt_ulog.h ebt_vlan.h
-unifdef-y := ebtables.h ebt_802_3.h
+header-y += ebt_among.h
+header-y += ebt_arp.h
+header-y += ebt_arpreply.h
+header-y += ebt_ip.h
+header-y += ebt_limit.h
+header-y += ebt_log.h
+header-y += ebt_mark_m.h
+header-y += ebt_mark_t.h
+header-y += ebt_nat.h
+header-y += ebt_pkttype.h
+header-y += ebt_redirect.h
+header-y += ebt_stp.h
+header-y += ebt_ulog.h
+header-y += ebt_vlan.h
+
+unifdef-y += ebtables.h
+unifdef-y += ebt_802_3.h
--- linux-2.6.18.orig/include/linux/netfilter_ipv4/Kbuild
+++ linux-2.6.18/include/linux/netfilter_ipv4/Kbuild
@@ -1,21 +1,63 @@
+header-y += ip_conntrack_helper.h
+header-y += ip_conntrack_helper_h323_asn1.h
+header-y += ip_conntrack_helper_h323_types.h
+header-y += ip_conntrack_protocol.h
+header-y += ip_conntrack_sctp.h
+header-y += ip_conntrack_tcp.h
+header-y += ip_conntrack_tftp.h
+header-y += ip_nat_pptp.h
+header-y += ipt_addrtype.h
+header-y += ipt_ah.h
+header-y += ipt_CLASSIFY.h
+header-y += ipt_CLUSTERIP.h
+header-y += ipt_comment.h
+header-y += ipt_connbytes.h
+header-y += ipt_connmark.h
+header-y += ipt_CONNMARK.h
+header-y += ipt_conntrack.h
+header-y += ipt_dccp.h
+header-y += ipt_dscp.h
+header-y += ipt_DSCP.h
+header-y += ipt_ecn.h
+header-y += ipt_ECN.h
+header-y += ipt_esp.h
+header-y += ipt_hashlimit.h
+header-y += ipt_helper.h
+header-y += ipt_iprange.h
+header-y += ipt_length.h
+header-y += ipt_limit.h
+header-y += ipt_LOG.h
+header-y += ipt_mac.h
+header-y += ipt_mark.h
+header-y += ipt_MARK.h
+header-y += ipt_multiport.h
+header-y += ipt_NFQUEUE.h
+header-y += ipt_owner.h
+header-y += ipt_physdev.h
+header-y += ipt_pkttype.h
+header-y += ipt_policy.h
+header-y += ipt_realm.h
+header-y += ipt_recent.h
+header-y += ipt_REJECT.h
+header-y += ipt_SAME.h
+header-y += ipt_sctp.h
+header-y += ipt_state.h
+header-y += ipt_string.h
+header-y += ipt_tcpmss.h
+header-y += ipt_TCPMSS.h
+header-y += ipt_tos.h
+header-y += ipt_TOS.h
+header-y += ipt_ttl.h
+header-y += ipt_TTL.h
+header-y += ipt_ULOG.h

-header-y := ip_conntrack_helper.h ip_conntrack_helper_h323_asn1.h \
- ip_conntrack_helper_h323_types.h ip_conntrack_protocol.h \
- ip_conntrack_sctp.h ip_conntrack_tcp.h ip_conntrack_tftp.h \
- ip_nat_pptp.h ipt_addrtype.h ipt_ah.h \
- ipt_CLASSIFY.h ipt_CLUSTERIP.h ipt_comment.h \
- ipt_connbytes.h ipt_connmark.h ipt_CONNMARK.h \
- ipt_conntrack.h ipt_dccp.h ipt_dscp.h ipt_DSCP.h ipt_ecn.h \
- ipt_ECN.h ipt_esp.h ipt_hashlimit.h ipt_helper.h \
- ipt_iprange.h ipt_length.h ipt_limit.h ipt_LOG.h ipt_mac.h \
- ipt_mark.h ipt_MARK.h ipt_multiport.h ipt_NFQUEUE.h \
- ipt_owner.h ipt_physdev.h ipt_pkttype.h ipt_policy.h \
- ipt_realm.h ipt_recent.h ipt_REJECT.h ipt_SAME.h \
- ipt_sctp.h ipt_state.h ipt_string.h ipt_tcpmss.h \
- ipt_TCPMSS.h ipt_tos.h ipt_TOS.h ipt_ttl.h ipt_TTL.h \
- ipt_ULOG.h
-
-unifdef-y := ip_conntrack.h ip_conntrack_h323.h ip_conntrack_irc.h \
- ip_conntrack_pptp.h ip_conntrack_proto_gre.h \
- ip_conntrack_tuple.h ip_nat.h ip_nat_rule.h ip_queue.h \
- ip_tables.h
+unifdef-y += ip_conntrack.h
+unifdef-y += ip_conntrack_h323.h
+unifdef-y += ip_conntrack_irc.h
+unifdef-y += ip_conntrack_pptp.h
+unifdef-y += ip_conntrack_proto_gre.h
+unifdef-y += ip_conntrack_tuple.h
+unifdef-y += ip_nat.h
+unifdef-y += ip_nat_rule.h
+unifdef-y += ip_queue.h
+unifdef-y += ip_tables.h
--- linux-2.6.18.orig/include/linux/netfilter_ipv6/Kbuild
+++ linux-2.6.18/include/linux/netfilter_ipv6/Kbuild
@@ -1,6 +1,21 @@
-header-y += ip6t_HL.h ip6t_LOG.h ip6t_MARK.h ip6t_REJECT.h ip6t_ah.h \
- ip6t_esp.h ip6t_frag.h ip6t_hl.h ip6t_ipv6header.h \
- ip6t_length.h ip6t_limit.h ip6t_mac.h ip6t_mark.h \
- ip6t_multiport.h ip6t_opts.h ip6t_owner.h ip6t_policy.h \
- ip6t_physdev.h ip6t_rt.h
-unifdef-y := ip6_tables.h
+header-y += ip6t_HL.h
+header-y += ip6t_LOG.h
+header-y += ip6t_MARK.h
+header-y += ip6t_REJECT.h
+header-y += ip6t_ah.h
+header-y += ip6t_esp.h
+header-y += ip6t_frag.h
+header-y += ip6t_hl.h
+header-y += ip6t_ipv6header.h
+header-y += ip6t_length.h
+header-y += ip6t_limit.h
+header-y += ip6t_mac.h
+header-y += ip6t_mark.h
+header-y += ip6t_multiport.h
+header-y += ip6t_opts.h
+header-y += ip6t_owner.h
+header-y += ip6t_policy.h
+header-y += ip6t_physdev.h
+header-y += ip6t_rt.h
+
+unifdef-y += ip6_tables.h
--- linux-2.6.18.orig/include/linux/nfsd/Kbuild
+++ linux-2.6.18/include/linux/nfsd/Kbuild
@@ -1,2 +1,7 @@
-unifdef-y := const.h export.h stats.h syscall.h nfsfh.h debug.h auth.h
-
+unifdef-y += const.h
+unifdef-y += export.h
+unifdef-y += stats.h
+unifdef-y += syscall.h
+unifdef-y += nfsfh.h
+unifdef-y += debug.h
+unifdef-y += auth.h
--- linux-2.6.18.orig/include/linux/raid/Kbuild
+++ linux-2.6.18/include/linux/raid/Kbuild
@@ -1 +1,2 @@
-header-y += md_p.h md_u.h
+header-y += md_p.h
+header-y += md_u.h
--- linux-2.6.18.orig/include/linux/sunrpc/Kbuild
+++ linux-2.6.18/include/linux/sunrpc/Kbuild
@@ -1 +1 @@
-unifdef-y := debug.h
+unifdef-y += debug.h
--- linux-2.6.18.orig/include/linux/tc_act/Kbuild
+++ linux-2.6.18/include/linux/tc_act/Kbuild
@@ -1 +1,4 @@
-header-y += tc_gact.h tc_ipt.h tc_mirred.h tc_pedit.h
+header-y += tc_gact.h
+header-y += tc_ipt.h
+header-y += tc_mirred.h
+header-y += tc_pedit.h
--- linux-2.6.18.orig/include/linux/tc_ematch/Kbuild
+++ linux-2.6.18/include/linux/tc_ematch/Kbuild
@@ -1 +1,4 @@
-headers-y := tc_em_cmp.h tc_em_meta.h tc_em_nbyte.h tc_em_text.h
+header-y += tc_em_cmp.h
+header-y += tc_em_meta.h
+header-y += tc_em_nbyte.h
+header-y += tc_em_text.h
--- linux-2.6.18.orig/include/mtd/Kbuild
+++ linux-2.6.18/include/mtd/Kbuild
@@ -1,2 +1,6 @@
-unifdef-y := mtd-abi.h
-header-y := inftl-user.h jffs2-user.h mtd-user.h nftl-user.h
+header-y += inftl-user.h
+header-y += jffs2-user.h
+header-y += mtd-user.h
+header-y += nftl-user.h
+
+unifdef-y += mtd-abi.h
--- linux-2.6.18.orig/include/rdma/Kbuild
+++ linux-2.6.18/include/rdma/Kbuild
@@ -1 +1 @@
-header-y := ib_user_mad.h
+header-y += ib_user_mad.h
--- linux-2.6.18.orig/include/scsi/Kbuild
+++ linux-2.6.18/include/scsi/Kbuild
@@ -1,2 +1,4 @@
header-y += scsi.h
-unifdef-y := scsi_ioctl.h sg.h
+
+unifdef-y += scsi_ioctl.h
+unifdef-y += sg.h
--- linux-2.6.18.orig/include/sound/Kbuild
+++ linux-2.6.18/include/sound/Kbuild
@@ -1,2 +1,10 @@
-header-y := asound_fm.h hdsp.h hdspm.h sfnt_info.h sscape_ioctl.h
-unifdef-y := asequencer.h asound.h emu10k1.h sb16_csp.h
+header-y += asound_fm.h
+header-y += hdsp.h
+header-y += hdspm.h
+header-y += sfnt_info.h
+header-y += sscape_ioctl.h
+
+unifdef-y += asequencer.h
+unifdef-y += asound.h
+unifdef-y += emu10k1.h
+unifdef-y += sb16_csp.h
--- linux-2.6.18.orig/include/video/Kbuild
+++ linux-2.6.18/include/video/Kbuild
@@ -1 +1 @@
-unifdef-y := sisfb.h
+unifdef-y += sisfb.h

--

2006-10-11 21:05:46

by Greg KH

[permalink] [raw]
Subject: [patch 09/67] Video: pvrusb2: Suppress compiler warning


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

------------------
From: Mike Isely <[email protected]>

The pvrusb2 driver needs to call video_devdata() in order to correctly
transform a file pointer into a video_device pointer. Unfortunately
the prototype for this function has been marked V4L1-only and there's
no official substitute that I can find for V4L2. Adding to the
mystery is that the implementation for this function exists whether or
not V4L1 compatibility has been selected. The upshot of all this is
that we get a compilation warning here about a missing prototype but
the code links OK. This fix solves the warning by copying the
prototype into the source file that is using it. Yes this is a hack,
but it's a safe one for 2.6.18 (any alternative would be much more
intrusive). A better solution should be forthcoming for the next
kernel.

Signed-off-by: Mike Isely <[email protected]>
Signed-off-by: Michael Krufky <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/media/video/pvrusb2/pvrusb2-v4l2.c | 6 ++++++
1 file changed, 6 insertions(+)

--- linux-2.6.18.orig/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ linux-2.6.18/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -32,6 +32,12 @@
#include <linux/videodev2.h>
#include <media/v4l2-common.h>

+/* Mike Isely <[email protected]> 23-Sep-2006 - This function is prototyped
+ * only for V4L1 but is implemented regardless of the V4L1 compatibility
+ * option state. V4L2 has no replacement for this and we need it. For now
+ * copy the prototype here so we can avoid the compiler warning. */
+extern struct video_device* video_devdata(struct file*);
+
struct pvr2_v4l2_dev;
struct pvr2_v4l2_fh;
struct pvr2_v4l2;

--

2006-10-11 21:07:42

by Greg KH

[permalink] [raw]
Subject: [patch 36/67] Remove offsetof() from user-visible <linux/stddef.h>


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

------------------
From: David Woodhouse <[email protected]>

It's not used by anything user-visible, and it make g++ unhappy.

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
include/linux/Kbuild | 2 +-
include/linux/stddef.h | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)

--- linux-2.6.18.orig/include/linux/Kbuild
+++ linux-2.6.18/include/linux/Kbuild
@@ -143,7 +143,6 @@ header-y += snmp.h
header-y += sockios.h
header-y += som.h
header-y += sound.h
-header-y += stddef.h
header-y += synclink.h
header-y += telephony.h
header-y += termios.h
@@ -318,6 +317,7 @@ unifdef-y += sonet.h
unifdef-y += sonypi.h
unifdef-y += soundcard.h
unifdef-y += stat.h
+unifdef-y += stddef.h
unifdef-y += sysctl.h
unifdef-y += tcp.h
unifdef-y += time.h
--- linux-2.6.18.orig/include/linux/stddef.h
+++ linux-2.6.18/include/linux/stddef.h
@@ -10,11 +10,13 @@
#define NULL ((void *)0)
#endif

+#ifdef __KERNEL__
#undef offsetof
#ifdef __compiler_offsetof
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
#else
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
+#endif /* __KERNEL__ */

#endif

--

2006-10-11 21:08:01

by Greg KH

[permalink] [raw]
Subject: [patch 31/67] Remove ARM26 header export.


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

------------------
From: David Woodhouse <[email protected]>

We ought to be able to use ARM headers; no need for special ARM26 version.

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-arm26/Kbuild | 1 -
1 file changed, 1 deletion(-)

--- linux-2.6.18.orig/include/asm-arm26/Kbuild
+++ /dev/null
@@ -1 +0,0 @@
-include include/asm-generic/Kbuild.asm

--

2006-10-11 21:10:36

by Greg KH

[permalink] [raw]
Subject: [patch 52/67] SPARC64: Fix sparc64 ramdisk handling


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

------------------
From: David S. Miller <[email protected]>

[SPARC64]: Kill bogus check from bootmem_init().

There is an ancient and totally incorrect sanity check being
done on the ramdisk location. The check assumes that the
kernel is always loaded to physical address zero, which is
wrong. It was trying to validate the ramdisk value by saying that
if it fell within the kernel image address range it must be wrong.

Anyways, kill this because it actually creates problems. The
'ramdisk_image' should always be adjusted down by KERNBASE.
SILO can easily put the ramdisk in a location which causes
this test to trigger, breaking things.

[ Based almost entirely upon a patch from Ben Collins. ]

Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/sparc64/mm/init.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

--- linux-2.6.18.orig/arch/sparc64/mm/init.c
+++ linux-2.6.18/arch/sparc64/mm/init.c
@@ -920,8 +920,7 @@ static unsigned long __init bootmem_init
if (sparc_ramdisk_image || sparc_ramdisk_image64) {
unsigned long ramdisk_image = sparc_ramdisk_image ?
sparc_ramdisk_image : sparc_ramdisk_image64;
- if (ramdisk_image >= (unsigned long)_end - 2 * PAGE_SIZE)
- ramdisk_image -= KERNBASE;
+ ramdisk_image -= KERNBASE;
initrd_start = ramdisk_image + phys_base;
initrd_end = initrd_start + sparc_ramdisk_size;
if (initrd_end > end_of_phys_memory) {

--

2006-10-11 21:08:50

by Greg KH

[permalink] [raw]
Subject: [patch 45/67] cpu to node relationship fixup: map cpu to node


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

------------------
From: KAMEZAWA Hiroyuki <[email protected]>

Assume that a cpu is *physically* offlined at boot time...

Because smpboot.c::smp_boot_cpu_map() canoot find cpu's sapicid,
numa.c::build_cpu_to_node_map() cannot build cpu<->node map for
offlined cpu.

For such cpus, cpu_to_node map should be fixed at cpu-hot-add.
This mapping should be done before cpu onlining.

This patch also handles cpu hotremove case.

Signed-off-by: KAMEZAWA Hiroyuki <[email protected]>
Cc: Tony Luck <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/ia64/kernel/numa.c | 34 +++++++++++++++++++++++++++++++---
arch/ia64/kernel/topology.c | 4 +++-
include/asm-ia64/numa.h | 6 ++++++
3 files changed, 40 insertions(+), 4 deletions(-)

--- linux-2.6.18.orig/arch/ia64/kernel/numa.c
+++ linux-2.6.18/arch/ia64/kernel/numa.c
@@ -29,6 +29,36 @@ EXPORT_SYMBOL(cpu_to_node_map);

cpumask_t node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned;

+void __cpuinit map_cpu_to_node(int cpu, int nid)
+{
+ int oldnid;
+ if (nid < 0) { /* just initialize by zero */
+ cpu_to_node_map[cpu] = 0;
+ return;
+ }
+ /* sanity check first */
+ oldnid = cpu_to_node_map[cpu];
+ if (cpu_isset(cpu, node_to_cpu_mask[oldnid])) {
+ return; /* nothing to do */
+ }
+ /* we don't have cpu-driven node hot add yet...
+ In usual case, node is created from SRAT at boot time. */
+ if (!node_online(nid))
+ nid = first_online_node;
+ cpu_to_node_map[cpu] = nid;
+ cpu_set(cpu, node_to_cpu_mask[nid]);
+ return;
+}
+
+void __cpuinit unmap_cpu_from_node(int cpu, int nid)
+{
+ WARN_ON(!cpu_isset(cpu, node_to_cpu_mask[nid]));
+ WARN_ON(cpu_to_node_map[cpu] != nid);
+ cpu_to_node_map[cpu] = 0;
+ cpu_clear(cpu, node_to_cpu_mask[nid]);
+}
+
+
/**
* build_cpu_to_node_map - setup cpu to node and node to cpumask arrays
*
@@ -49,8 +79,6 @@ void __init build_cpu_to_node_map(void)
node = node_cpuid[i].nid;
break;
}
- cpu_to_node_map[cpu] = (node >= 0) ? node : 0;
- if (node >= 0)
- cpu_set(cpu, node_to_cpu_mask[node]);
+ map_cpu_to_node(cpu, node);
}
}
--- linux-2.6.18.orig/arch/ia64/kernel/topology.c
+++ linux-2.6.18/arch/ia64/kernel/topology.c
@@ -36,6 +36,7 @@ int arch_register_cpu(int num)
*/
if (!can_cpei_retarget() && is_cpu_cpei_target(num))
sysfs_cpus[num].cpu.no_control = 1;
+ map_cpu_to_node(num, node_cpuid[num].nid);
#endif

return register_cpu(&sysfs_cpus[num].cpu, num);
@@ -45,7 +46,8 @@ int arch_register_cpu(int num)

void arch_unregister_cpu(int num)
{
- return unregister_cpu(&sysfs_cpus[num].cpu);
+ unregister_cpu(&sysfs_cpus[num].cpu);
+ unmap_cpu_from_node(num, cpu_to_node(num));
}
EXPORT_SYMBOL(arch_register_cpu);
EXPORT_SYMBOL(arch_unregister_cpu);
--- linux-2.6.18.orig/include/asm-ia64/numa.h
+++ linux-2.6.18/include/asm-ia64/numa.h
@@ -64,7 +64,13 @@ extern int paddr_to_nid(unsigned long pa

#define local_nodeid (cpu_to_node_map[smp_processor_id()])

+extern void map_cpu_to_node(int cpu, int nid);
+extern void unmap_cpu_from_node(int cpu, int nid);
+
+
#else /* !CONFIG_NUMA */
+#define map_cpu_to_node(cpu, nid) do{}while(0)
+#define unmap_cpu_from_node(cpu, nid) do{}while(0)

#define paddr_to_nid(addr) 0


--

2006-10-11 21:09:33

by Greg KH

[permalink] [raw]
Subject: [patch 63/67] ide-generic: jmicron fix


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

------------------
From: Alan Cox <[email protected]>

Some people find their Jmicron pata port reports its disabled even
though it has devices on it and was boot probed. Fix this

(Candidate for 2.6.18.*, less so for 2.6.19 as we've got a proper
jmicron driver on the merge for that to replace ide-generic support)

From: Alan Cox <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
drivers/ide/pci/generic.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

--- linux-2.6.18.orig/drivers/ide/pci/generic.c
+++ linux-2.6.18/drivers/ide/pci/generic.c
@@ -245,10 +245,12 @@ static int __devinit generic_init_one(st
if (dev->vendor == PCI_VENDOR_ID_JMICRON && PCI_FUNC(dev->devfn) != 1)
goto out;

- pci_read_config_word(dev, PCI_COMMAND, &command);
- if (!(command & PCI_COMMAND_IO)) {
- printk(KERN_INFO "Skipping disabled %s IDE controller.\n", d->name);
- goto out;
+ if (dev->vendor != PCI_VENDOR_ID_JMICRON) {
+ pci_read_config_word(dev, PCI_COMMAND, &command);
+ if (!(command & PCI_COMMAND_IO)) {
+ printk(KERN_INFO "Skipping disabled %s IDE controller.\n", d->name);
+ goto out;
+ }
}
ret = ide_setup_pci_device(dev, d);
out:

--

2006-10-11 21:08:23

by Greg KH

[permalink] [raw]
Subject: [patch 50/67] CPUFREQ: Fix some more CPU hotplug locking.


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

------------------
From: Dave Jones <[email protected]>

[CPUFREQ] Fix some more CPU hotplug locking.

Lukewarm IQ detected in hotplug locking
BUG: warning at kernel/cpu.c:38/lock_cpu_hotplug()
[<b0134a42>] lock_cpu_hotplug+0x42/0x65
[<b02f8af1>] cpufreq_update_policy+0x25/0xad
[<b0358756>] kprobe_flush_task+0x18/0x40
[<b0355aab>] schedule+0x63f/0x68b
[<b01377c2>] __link_module+0x0/0x1f
[<b0119e7d>] __cond_resched+0x16/0x34
[<b03560bf>] cond_resched+0x26/0x31
[<b0355b0e>] wait_for_completion+0x17/0xb1
[<f965c547>] cpufreq_stat_cpu_callback+0x13/0x20 [cpufreq_stats]
[<f9670074>] cpufreq_stats_init+0x74/0x8b [cpufreq_stats]
[<b0137872>] sys_init_module+0x91/0x174
[<b0102c81>] sysenter_past_esp+0x56/0x79

As there are other places that call cpufreq_update_policy without
the hotplug lock, it seems better to keep the hotplug locking
at the lower level for the time being until this is revamped.

Signed-off-by: Dave Jones <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/cpufreq/cpufreq_stats.c | 2 --
1 file changed, 2 deletions(-)

--- linux-2.6.18.orig/drivers/cpufreq/cpufreq_stats.c
+++ linux-2.6.18/drivers/cpufreq/cpufreq_stats.c
@@ -350,12 +350,10 @@ __init cpufreq_stats_init(void)
}

register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
- lock_cpu_hotplug();
for_each_online_cpu(cpu) {
cpufreq_stat_cpu_callback(&cpufreq_stat_cpu_notifier, CPU_ONLINE,
(void *)(long)cpu);
}
- unlock_cpu_hotplug();
return 0;
}
static void

--

2006-10-11 21:09:37

by Greg KH

[permalink] [raw]
Subject: [patch 60/67] rtc driver rtc-pcf8563 century bit inversed


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

------------------
From: Jean-Baptiste Maneyrol <[email protected]>

The century bit PCF8563_MO_C in the month register is misinterpreted. It
is set to 1 for the 20th century and 0 for 21th, and the driver is
expecting the opposite behavior.

Acked-by: Alessandro Zummo <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
drivers/rtc/rtc-pcf8563.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/drivers/rtc/rtc-pcf8563.c
+++ linux-2.6.18/drivers/rtc/rtc-pcf8563.c
@@ -95,7 +95,7 @@ static int pcf8563_get_datetime(struct i
tm->tm_wday = buf[PCF8563_REG_DW] & 0x07;
tm->tm_mon = BCD2BIN(buf[PCF8563_REG_MO] & 0x1F) - 1; /* rtc mn 1-12 */
tm->tm_year = BCD2BIN(buf[PCF8563_REG_YR])
- + (buf[PCF8563_REG_MO] & PCF8563_MO_C ? 100 : 0);
+ + (buf[PCF8563_REG_MO] & PCF8563_MO_C ? 0 : 100);

dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
"mday=%d, mon=%d, year=%d, wday=%d\n",
@@ -135,7 +135,7 @@ static int pcf8563_set_datetime(struct i

/* year and century */
buf[PCF8563_REG_YR] = BIN2BCD(tm->tm_year % 100);
- if (tm->tm_year / 100)
+ if (tm->tm_year < 100)
buf[PCF8563_REG_MO] |= PCF8563_MO_C;

buf[PCF8563_REG_DW] = tm->tm_wday & 0x07;

--

2006-10-11 21:10:14

by Greg KH

[permalink] [raw]
Subject: [patch 59/67] fbdev: correct buffer size limit in fbmem_read_proc()


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

------------------
From: Geert Uytterhoeven <[email protected]>

Address http://bugzilla.kernel.org/show_bug.cgi?id=7189

It should check `clen', not `len'.

Signed-off-by: Geert Uytterhoeven <[email protected]>
Cc: <[email protected]>
Cc: "Antonino A. Daplas" <[email protected]>
Cc: Willy Tarreau <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
drivers/video/fbmem.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

--- linux-2.6.18.orig/drivers/video/fbmem.c
+++ linux-2.6.18/drivers/video/fbmem.c
@@ -554,7 +554,8 @@ static int fbmem_read_proc(char *buf, ch
int clen;

clen = 0;
- for (fi = registered_fb; fi < &registered_fb[FB_MAX] && len < 4000; fi++)
+ for (fi = registered_fb; fi < &registered_fb[FB_MAX] && clen < 4000;
+ fi++)
if (*fi)
clen += sprintf(buf + clen, "%d %s\n",
(*fi)->node,

--

2006-10-11 21:08:49

by Greg KH

[permalink] [raw]
Subject: [patch 46/67] i386: fix flat mode numa on a real numa system


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

------------------
From: keith mannthey <[email protected]>

If there is only 1 node in the system cpus should think they are apart of
some other node.

If cases where a real numa system boots the Flat numa option make sure the
cpus don't claim to be apart on a non-existent node.

Signed-off-by: Keith Mannthey <[email protected]>
Cc: Andy Whitcroft <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Andi Kleen <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/i386/kernel/smpboot.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

--- linux-2.6.18.orig/arch/i386/kernel/smpboot.c
+++ linux-2.6.18/arch/i386/kernel/smpboot.c
@@ -642,9 +642,13 @@ static void map_cpu_to_logical_apicid(vo
{
int cpu = smp_processor_id();
int apicid = logical_smp_processor_id();
+ int node = apicid_to_node(apicid);
+
+ if (!node_online(node))
+ node = first_online_node;

cpu_2_logical_apicid[cpu] = apicid;
- map_cpu_to_node(cpu, apicid_to_node(apicid));
+ map_cpu_to_node(cpu, node);
}

static void unmap_cpu_to_logical_apicid(int cpu)

--

2006-10-11 21:10:37

by Greg KH

[permalink] [raw]
Subject: [patch 54/67] PKT_SCHED: cls_basic: Use unsigned int when generating handle


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

------------------
From: David Miller <[email protected]>

gcc-4.1 and later take advantage of the fact that in the
C language certain types of overflow/underflow are undefined,
and this is completely legitimate.

Prevents filters from being added if the first generated
handle already exists.

Signed-off-by: Kim Nordlund <[email protected]>
Signed-off-by: Thomas Graf <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
net/sched/cls_basic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/net/sched/cls_basic.c
+++ linux-2.6.18/net/sched/cls_basic.c
@@ -194,7 +194,7 @@ static int basic_change(struct tcf_proto
if (handle)
f->handle = handle;
else {
- int i = 0x80000000;
+ unsigned int i = 0x80000000;
do {
if (++head->hgenerator == 0x7FFFFFFF)
head->hgenerator = 1;

--

2006-10-11 21:10:15

by Greg KH

[permalink] [raw]
Subject: [patch 55/67] IPV6: Disable SG for GSO unless we have checksum


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

------------------
From: David Miller <[email protected]>

Because the system won't turn off the SG flag for us we
need to do this manually on the IPv6 path. Otherwise we
will throw IPv6 packets with bad checksums at the hardware.

Signed-off-by: Herbert Xu <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
net/ipv6/ipv6_sockglue.c | 3 +++
1 file changed, 3 insertions(+)

--- linux-2.6.18.orig/net/ipv6/ipv6_sockglue.c
+++ linux-2.6.18/net/ipv6/ipv6_sockglue.c
@@ -123,6 +123,9 @@ static struct sk_buff *ipv6_gso_segment(
struct ipv6hdr *ipv6h;
struct inet6_protocol *ops;

+ if (!(features & NETIF_F_HW_CSUM))
+ features &= ~NETIF_F_SG;
+
if (unlikely(skb_shinfo(skb)->gso_type &
~(SKB_GSO_UDP |
SKB_GSO_DODGY |

--

2006-10-11 21:11:40

by Greg KH

[permalink] [raw]
Subject: [patch 66/67] NETFILTER: NAT: fix NOTRACK checksum handling

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

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

From: Patrick McHardy <[email protected]>

The whole idea with the NOTRACK netfilter target is that
you can force the netfilter code to avoid connection
tracking, and all costs assosciated with it, by making
traffic match a NOTRACK rule.

But this is totally broken by the fact that we do a checksum
calculation over the packet before we do the NOTRACK bypass
check, which is very expensive. People setup NOTRACK rules
explicitly to avoid all of these kinds of costs.

This patch from Patrick, already in Linus's tree, fixes the
bug.

Move the check for ip_conntrack_untracked before the call to
skb_checksum_help to fix NOTRACK excemptions from NAT. Pre-2.6.19
NAT code breaks TSO by invalidating hardware checksums for every
packet, even if explicitly excluded from NAT through NOTRACK.

2.6.19 includes a fix that makes NAT and TSO live in harmony,
but the performance degradation caused by this deserves making
at least the workaround work properly in -stable.

Signed-off-by: Patrick McHardy <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
net/ipv4/netfilter/ip_nat_standalone.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

--- linux-2.6.18.orig/net/ipv4/netfilter/ip_nat_standalone.c
+++ linux-2.6.18/net/ipv4/netfilter/ip_nat_standalone.c
@@ -110,12 +110,17 @@ ip_nat_fn(unsigned int hooknum,
IP_NF_ASSERT(!((*pskb)->nh.iph->frag_off
& htons(IP_MF|IP_OFFSET)));

+ ct = ip_conntrack_get(*pskb, &ctinfo);
+
+ /* Don't try to NAT if this packet is not conntracked */
+ if (ct == &ip_conntrack_untracked)
+ return NF_ACCEPT;
+
/* If we had a hardware checksum before, it's now invalid */
if ((*pskb)->ip_summed == CHECKSUM_HW)
if (skb_checksum_help(*pskb, (out == NULL)))
return NF_DROP;

- ct = ip_conntrack_get(*pskb, &ctinfo);
/* Can't track? It's not due to stress, or conntrack would
have dropped it. Hence it's the user's responsibilty to
packet filter it out, or implement conntrack/NAT for that
@@ -137,10 +142,6 @@ ip_nat_fn(unsigned int hooknum,
return NF_ACCEPT;
}

- /* Don't try to NAT if this packet is not conntracked */
- if (ct == &ip_conntrack_untracked)
- return NF_ACCEPT;
-
switch (ctinfo) {
case IP_CT_RELATED:
case IP_CT_RELATED+IP_CT_IS_REPLY:

--

2006-10-11 21:12:05

by Greg KH

[permalink] [raw]
Subject: [patch 62/67] scx200_hrt: fix precedence bug manifesting as 27x clock in 1 MHz mode


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

------------------
From: Jim Cromie <[email protected]>

Fix paren-placement / precedence bug breaking initialization for 1 MHz
clock mode.

Also fix comment spelling error, and fence-post (off-by-one) error on
symbol used in request_region.

Addresses http://bugzilla.kernel.org/show_bug.cgi?id=7242

Thanks [email protected], [email protected], for the
reports and patch test, and [email protected] for the independent patch
and verification.

Signed-off-by: Jim Cromie <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Acked-by: John Stultz <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/clocksource/scx200_hrt.c | 4 ++--
include/linux/scx200.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)

--- linux-2.6.18.orig/drivers/clocksource/scx200_hrt.c
+++ linux-2.6.18/drivers/clocksource/scx200_hrt.c
@@ -63,7 +63,7 @@ static struct clocksource cs_hrt = {

static int __init init_hrt_clocksource(void)
{
- /* Make sure scx200 has initializedd the configuration block */
+ /* Make sure scx200 has initialized the configuration block */
if (!scx200_cb_present())
return -ENODEV;

@@ -76,7 +76,7 @@ static int __init init_hrt_clocksource(v
}

/* write timer config */
- outb(HR_TMEN | (mhz27) ? HR_TMCLKSEL : 0,
+ outb(HR_TMEN | (mhz27 ? HR_TMCLKSEL : 0),
scx200_cb_base + SCx200_TMCNFG_OFFSET);

if (mhz27) {
--- linux-2.6.18.orig/include/linux/scx200.h
+++ linux-2.6.18/include/linux/scx200.h
@@ -32,7 +32,7 @@ extern unsigned scx200_cb_base;

/* High Resolution Timer */
#define SCx200_TIMER_OFFSET 0x08
-#define SCx200_TIMER_SIZE 0x05
+#define SCx200_TIMER_SIZE 0x06

/* Clock Generators */
#define SCx200_CLOCKGEN_OFFSET 0x10

--

2006-10-11 21:12:47

by Greg KH

[permalink] [raw]
Subject: [patch 61/67] invalidate_inode_pages2(): ignore page refcounts


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

------------------
From: Andrew Morton <[email protected]>

The recent fix to invalidate_inode_pages() (git commit 016eb4a) managed to
unfix invalidate_inode_pages2().

The problem is that various bits of code in the kernel can take transient refs
on pages: the page scanner will do this when inspecting a batch of pages, and
the lru_cache_add() batching pagevecs also hold a ref.

Net result is transient failures in invalidate_inode_pages2(). This affects
NFS directory invalidation (observed) and presumably also block-backed
direct-io (not yet reported).

Fix it by reverting invalidate_inode_pages2() back to the old version which
ignores the page refcounts.

We may come up with something more clever later, but for now we need a 2.6.18
fix for NFS.

Cc: Chuck Lever <[email protected]>
Cc: Nick Piggin <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
mm/truncate.c | 34 ++++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/mm/truncate.c
+++ linux-2.6.18/mm/truncate.c
@@ -270,9 +270,39 @@ unsigned long invalidate_inode_pages(str
{
return invalidate_mapping_pages(mapping, 0, ~0UL);
}
-
EXPORT_SYMBOL(invalidate_inode_pages);

+/*
+ * This is like invalidate_complete_page(), except it ignores the page's
+ * refcount. We do this because invalidate_inode_pages2() needs stronger
+ * invalidation guarantees, and cannot afford to leave pages behind because
+ * shrink_list() has a temp ref on them, or because they're transiently sitting
+ * in the lru_cache_add() pagevecs.
+ */
+static int
+invalidate_complete_page2(struct address_space *mapping, struct page *page)
+{
+ if (page->mapping != mapping)
+ return 0;
+
+ if (PagePrivate(page) && !try_to_release_page(page, 0))
+ return 0;
+
+ write_lock_irq(&mapping->tree_lock);
+ if (PageDirty(page))
+ goto failed;
+
+ BUG_ON(PagePrivate(page));
+ __remove_from_page_cache(page);
+ write_unlock_irq(&mapping->tree_lock);
+ ClearPageUptodate(page);
+ page_cache_release(page); /* pagecache ref */
+ return 1;
+failed:
+ write_unlock_irq(&mapping->tree_lock);
+ return 0;
+}
+
/**
* invalidate_inode_pages2_range - remove range of pages from an address_space
* @mapping: the address_space
@@ -339,7 +369,7 @@ int invalidate_inode_pages2_range(struct
}
}
was_dirty = test_clear_page_dirty(page);
- if (!invalidate_complete_page(mapping, page)) {
+ if (!invalidate_complete_page2(mapping, page)) {
if (was_dirty)
set_page_dirty(page);
ret = -EIO;

--

2006-10-11 21:12:46

by Greg KH

[permalink] [raw]
Subject: [patch 64/67] x86-64: Calgary IOMMU: Fix off by one when calculating register space location


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

------------------
From: Jon Mason <[email protected]>

This patch has already been submitted for inclusion in the 2.6.19
tree, but not backported to the 2.6.18. Please pull the bug fix
below into the stable tree for the 2.6.18.1 release.

The purpose of the code being modified is to determine the location
of the calgary chip address space. This is done by a magical formula
of FE0MB-8MB*OneBasedChassisNumber+1MB*(RioNodeId-ChassisBase) to
find the offset where BIOS puts it. In this formula,
OneBasedChassisNumber corresponds to the NUMA node, and rionodeid is
always 2 or 3 depending on which chip in the system it is. The
problem was that we had an off by one error that caused us to account
some busses to the wrong chip and thus give them the wrong address
space.

Fixes RH bugzilla #203971.

Signed-off-by: Jon Mason <[email protected]>
Signed-off-by: Muli Ben-Yehuda <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/x86_64/kernel/pci-calgary.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/arch/x86_64/kernel/pci-calgary.c
+++ linux-2.6.18/arch/x86_64/kernel/pci-calgary.c
@@ -759,7 +759,16 @@ static inline unsigned int __init locate
int rionodeid;
u32 address;

- rionodeid = (dev->bus->number % 15 > 4) ? 3 : 2;
+ /*
+ * Each Calgary has four busses. The first four busses (first Calgary)
+ * have RIO node ID 2, then the next four (second Calgary) have RIO
+ * node ID 3, the next four (third Calgary) have node ID 2 again, etc.
+ * We use a gross hack - relying on the dev->bus->number ordering,
+ * modulo 14 - to decide which Calgary a given bus is on. Busses 0, 1,
+ * 2 and 4 are on the first Calgary (id 2), 6, 8, a and c are on the
+ * second (id 3), and then it repeats modulo 14.
+ */
+ rionodeid = (dev->bus->number % 14 > 4) ? 3 : 2;
/*
* register space address calculation as follows:
* FE0MB-8MB*OneBasedChassisNumber+1MB*(RioNodeId-ChassisBase)
@@ -767,7 +776,7 @@ static inline unsigned int __init locate
* RioNodeId is 2 for first Calgary, 3 for second Calgary
*/
address = START_ADDRESS -
- (0x800000 * (ONE_BASED_CHASSIS_NUM + dev->bus->number / 15)) +
+ (0x800000 * (ONE_BASED_CHASSIS_NUM + dev->bus->number / 14)) +
(0x100000) * (rionodeid - CHASSIS_BASE);
return address;
}

--

2006-10-11 21:10:59

by Greg KH

[permalink] [raw]
Subject: [patch 67/67] block layer: elv_iosched_show should get elv_list_lock


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

------------------
From: Vasily Tarasov <[email protected]>

elv_iosched_show function iterates other elv_list,
hence elv_list_lock should be got.

Also the question is: in elv_iosched_show, elv_iosched_store
q->elevator->elevator_type construction is used without locking q->queue_lock.
Is it expected?..

Signed-off-by: Vasily Tarasov <[email protected]>
Cc: Jens Axboe <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
block/elevator.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/block/elevator.c
+++ linux-2.6.18/block/elevator.c
@@ -892,7 +892,7 @@ ssize_t elv_iosched_show(request_queue_t
struct list_head *entry;
int len = 0;

- spin_lock_irq(q->queue_lock);
+ spin_lock_irq(&elv_list_lock);
list_for_each(entry, &elv_list) {
struct elevator_type *__e;

@@ -902,7 +902,7 @@ ssize_t elv_iosched_show(request_queue_t
else
len += sprintf(name+len, "%s ", __e->elevator_name);
}
- spin_unlock_irq(q->queue_lock);
+ spin_unlock_irq(&elv_list_lock);

len += sprintf(len+name, "\n");
return len;

--

2006-10-11 21:16:44

by Greg KH

[permalink] [raw]
Subject: [patch 58/67] mm: bug in set_page_dirty_buffers


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

------------------
From: Nick Piggin <[email protected]>

This was triggered, but not the fault of, the dirty page accounting
patches. Suitable for -stable as well, after it goes upstream.

Unable to handle kernel NULL pointer dereference at virtual address 0000004c
EIP is at _spin_lock+0x12/0x66
Call Trace:
[<401766e7>] __set_page_dirty_buffers+0x15/0xc0
[<401401e7>] set_page_dirty+0x2c/0x51
[<40140db2>] set_page_dirty_balance+0xb/0x3b
[<40145d29>] __do_fault+0x1d8/0x279
[<40147059>] __handle_mm_fault+0x125/0x951
[<401133f1>] do_page_fault+0x440/0x59f
[<4034d0c1>] error_code+0x39/0x40
[<08048a33>] 0x8048a33
=======================

Signed-off-by: Nick Piggin <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
fs/buffer.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

--- linux-2.6.18.orig/fs/buffer.c
+++ linux-2.6.18/fs/buffer.c
@@ -838,7 +838,10 @@ EXPORT_SYMBOL(mark_buffer_dirty_inode);
*/
int __set_page_dirty_buffers(struct page *page)
{
- struct address_space * const mapping = page->mapping;
+ struct address_space * const mapping = page_mapping(page);
+
+ if (unlikely(!mapping))
+ return !TestSetPageDirty(page);

spin_lock(&mapping->private_lock);
if (page_has_buffers(page)) {

--

2006-10-11 21:16:06

by Greg KH

[permalink] [raw]
Subject: [patch 57/67] TCP: Fix and simplify microsecond rtt sampling


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

------------------
From: David Miller <[email protected]>

This changes the microsecond RTT sampling so that samples are taken in
the same way that RTT samples are taken for the RTO calculator: on the
last segment acknowledged, and only when the segment hasn't been
retransmitted.

Signed-off-by: John Heffner <[email protected]>
Acked-by: Stephen Hemminger <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
net/ipv4/tcp_input.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

--- linux-2.6.18.orig/net/ipv4/tcp_input.c
+++ linux-2.6.18/net/ipv4/tcp_input.c
@@ -2237,13 +2237,12 @@ static int tcp_tso_acked(struct sock *sk
return acked;
}

-static u32 tcp_usrtt(const struct sk_buff *skb)
+static u32 tcp_usrtt(struct timeval *tv)
{
- struct timeval tv, now;
+ struct timeval now;

do_gettimeofday(&now);
- skb_get_timestamp(skb, &tv);
- return (now.tv_sec - tv.tv_sec) * 1000000 + (now.tv_usec - tv.tv_usec);
+ return (now.tv_sec - tv->tv_sec) * 1000000 + (now.tv_usec - tv->tv_usec);
}

/* Remove acknowledged frames from the retransmission queue. */
@@ -2258,6 +2257,7 @@ static int tcp_clean_rtx_queue(struct so
u32 pkts_acked = 0;
void (*rtt_sample)(struct sock *sk, u32 usrtt)
= icsk->icsk_ca_ops->rtt_sample;
+ struct timeval tv;

while ((skb = skb_peek(&sk->sk_write_queue)) &&
skb != sk->sk_send_head) {
@@ -2306,8 +2306,7 @@ static int tcp_clean_rtx_queue(struct so
seq_rtt = -1;
} else if (seq_rtt < 0) {
seq_rtt = now - scb->when;
- if (rtt_sample)
- (*rtt_sample)(sk, tcp_usrtt(skb));
+ skb_get_timestamp(skb, &tv);
}
if (sacked & TCPCB_SACKED_ACKED)
tp->sacked_out -= tcp_skb_pcount(skb);
@@ -2320,8 +2319,7 @@ static int tcp_clean_rtx_queue(struct so
}
} else if (seq_rtt < 0) {
seq_rtt = now - scb->when;
- if (rtt_sample)
- (*rtt_sample)(sk, tcp_usrtt(skb));
+ skb_get_timestamp(skb, &tv);
}
tcp_dec_pcount_approx(&tp->fackets_out, skb);
tcp_packets_out_dec(tp, skb);
@@ -2333,6 +2331,8 @@ static int tcp_clean_rtx_queue(struct so
if (acked&FLAG_ACKED) {
tcp_ack_update_rtt(sk, acked, seq_rtt);
tcp_ack_packets_out(sk, tp);
+ if (rtt_sample && !(acked & FLAG_RETRANS_DATA_ACKED))
+ (*rtt_sample)(sk, tcp_usrtt(&tv));

if (icsk->icsk_ca_ops->pkts_acked)
icsk->icsk_ca_ops->pkts_acked(sk, pkts_acked);

--

2006-10-11 21:16:44

by Greg KH

[permalink] [raw]
Subject: [patch 56/67] MD: Fix problem where hot-added drives are not resynced.


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

------------------
From: Neil Brown <[email protected]>

If a drive is added with HOT_ADD_DISK rather than ADD_NEW_DISK,
saved_raid_disk isn't initialised properly, and the drive can be
included in the array without a resync.


From: Neil Brown <[email protected]>
Cc: <[email protected]>
Cc: Richard Bollinger <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/md/md.c | 1 +
1 file changed, 1 insertion(+)

--- linux-2.6.18.orig/drivers/md/md.c
+++ linux-2.6.18/drivers/md/md.c
@@ -3867,6 +3867,7 @@ static int hot_add_disk(mddev_t * mddev,
}
clear_bit(In_sync, &rdev->flags);
rdev->desc_nr = -1;
+ rdev->saved_raid_disk = -1;
err = bind_rdev_to_array(rdev, mddev);
if (err)
goto abort_export;

--

2006-10-11 21:18:21

by Greg KH

[permalink] [raw]
Subject: [patch 43/67] backlight: fix oops in __mutex_lock_slowpath during head /sys/class/graphics/fb0/bits_per_pixel /sys/class/graphics/fb0/blank /sys/class/graphics/fb0/console /sys/class/graphics/fb0/cursor /sys/class/graphics/fb0/dev /sys/class/graphics/fb0/device /sys/class/graphics/fb0/mode /sys/class/graphics/fb0/modes /sys/class/graphics/fb0/name /sys/class/graphics/fb0/pan /sys/class/graphics/fb0/rotate /sys/class/graphics/fb0/state /sys/class/graphics/fb0/stride /sys/class/graphics/fb0/subsystem /sys/class/graphics/fb0/uevent /sys/class/graphics/fb0/virtual_size


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

------------------
From: Michael Hanselmann <[email protected]>

Seems like not all drivers use the framebuffer_alloc() function and won't
have an initialized mutex. But those don't have a backlight, anyway.

Signed-off-by: Michael Hanselmann <[email protected]>
Cc: Olaf Hering <[email protected]>
Cc: "Antonino A. Daplas" <[email protected]>
Cc: Daniel R Thompson <[email protected]>
Cc: Jon Smirl <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/video/fbsysfs.c | 12 ++++++++++++
1 file changed, 12 insertions(+)

--- linux-2.6.18.orig/drivers/video/fbsysfs.c
+++ linux-2.6.18/drivers/video/fbsysfs.c
@@ -397,6 +397,12 @@ static ssize_t store_bl_curve(struct cla
u8 tmp_curve[FB_BACKLIGHT_LEVELS];
unsigned int i;

+ /* Some drivers don't use framebuffer_alloc(), but those also
+ * don't have backlights.
+ */
+ if (!fb_info || !fb_info->bl_dev)
+ return -ENODEV;
+
if (count != (FB_BACKLIGHT_LEVELS / 8 * 24))
return -EINVAL;

@@ -430,6 +436,12 @@ static ssize_t show_bl_curve(struct clas
ssize_t len = 0;
unsigned int i;

+ /* Some drivers don't use framebuffer_alloc(), but those also
+ * don't have backlights.
+ */
+ if (!fb_info || !fb_info->bl_dev)
+ return -ENODEV;
+
mutex_lock(&fb_info->bl_mutex);
for (i = 0; i < FB_BACKLIGHT_LEVELS; i += 8)
len += snprintf(&buf[len], PAGE_SIZE,

--

2006-10-11 21:16:51

by Greg KH

[permalink] [raw]
Subject: [patch 53/67] sata_mv: fix oops


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

------------------
From: Jeff Garzik <[email protected]>

From: Jeff Garzik <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/scsi/sata_mv.c | 1 +
1 file changed, 1 insertion(+)

--- linux-2.6.18.orig/drivers/scsi/sata_mv.c
+++ linux-2.6.18/drivers/scsi/sata_mv.c
@@ -463,6 +463,7 @@ static const struct ata_port_operations

.qc_prep = mv_qc_prep_iie,
.qc_issue = mv_qc_issue,
+ .data_xfer = ata_mmio_data_xfer,

.eng_timeout = mv_eng_timeout,


--

2006-10-11 21:17:42

by Michael Ira Krufky

[permalink] [raw]
Subject: Re: [patch 06/67] Video: cx24123: fix PLL divisor setup

Greg KH wrote:
> -stable review patch. If anyone has any objections, please let us know.
>
> ------------------
> From: Yeasah Pell <[email protected]>
>
> The cx24109 datasheet says: "NOTE: if A=0, then N=N+1"
>
> The current code is the result of a misinterpretation of the datasheet to
> mean exactly the opposite of the requirement -- The actual value of N is 1
> greater than the value written when A is 0, so 1 needs to be *subtracted*
> from it to compensate.
>
> Signed-off-by: Yeasah Pell <[email protected]>
> Signed-off-by: Steven Toth <[email protected]>
> Signed-off-by: Michael Krufky <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>

Greg,

When you apply this patch to your 2.6.18.y tree (and also to your
2.6.17.y tree) , can you please preceed the patch title with 'DVB'
instead of 'VIDEO' ?

I'll be sure to specify the subsystem, instead of only the driver name
in future patches.

Thanks,

Michael Krufky

2006-10-11 21:17:41

by Greg KH

[permalink] [raw]
Subject: [patch 51/67] IPV6: bh_lock_sock_nested on tcp_v6_rcv


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

------------------
From: Fabio Olive Leite <[email protected]>

A while ago Ingo patched tcp_v4_rcv on net/ipv4/tcp_ipv4.c to use
bh_lock_sock_nested and silence a lock validator warning. This fixed
it for IPv4, but recently I saw a report of the same warning on IPv6.

Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
net/ipv6/tcp_ipv6.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/net/ipv6/tcp_ipv6.c
+++ linux-2.6.18/net/ipv6/tcp_ipv6.c
@@ -1228,7 +1228,7 @@ process:

skb->dev = NULL;

- bh_lock_sock(sk);
+ bh_lock_sock_nested(sk);
ret = 0;
if (!sock_owned_by_user(sk)) {
#ifdef CONFIG_NET_DMA

--

2006-10-11 21:18:21

by Greg KH

[permalink] [raw]
Subject: [patch 44/67] cpu to node relationship fixup: acpi_map_cpu2node


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

------------------
From: KAMEZAWA Hiroyuki <[email protected]>

Problem description:

We have additional_cpus= option for allocating possible_cpus. But nid
for possible cpus are not fixed at boot time. cpus which is offlined at
boot or cpus which is not on SRAT is not tied to its node. This will
cause panic at cpu onlining.

Usually, pxm_to_nid() mapping is fixed at boot time by SRAT.

But, unfortunately, some system (my system!) do not include
full SRAT table for possible cpus. (Then, I use
additiona_cpus= option.)

For such possible cpus, pxm<->nid should be fixed at
hot-add. We now have acpi_map_pxm_to_node() which is also
used at boot. It's suitable here.

Signed-off-by: KAMEZAWA Hiroyuki <[email protected]>
Cc: Tony Luck <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/ia64/kernel/acpi.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

--- linux-2.6.18.orig/arch/ia64/kernel/acpi.c
+++ linux-2.6.18/arch/ia64/kernel/acpi.c
@@ -771,16 +771,19 @@ int acpi_map_cpu2node(acpi_handle handle
{
#ifdef CONFIG_ACPI_NUMA
int pxm_id;
+ int nid;

pxm_id = acpi_get_pxm(handle);
-
/*
- * Assuming that the container driver would have set the proximity
- * domain and would have initialized pxm_to_node(pxm_id) && pxm_flag
+ * We don't have cpu-only-node hotadd. But if the system equips
+ * SRAT table, pxm is already found and node is ready.
+ * So, just pxm_to_nid(pxm) is OK.
+ * This code here is for the system which doesn't have full SRAT
+ * table for possible cpus.
*/
- node_cpuid[cpu].nid = (pxm_id < 0) ? 0 : pxm_to_node(pxm_id);
-
+ nid = acpi_map_pxm_to_node(pxm_id);
node_cpuid[cpu].phys_id = physid;
+ node_cpuid[cpu].nid = nid;
#endif
return (0);
}

--

2006-10-11 21:19:05

by Greg KH

[permalink] [raw]
Subject: [patch 49/67] SPARC64: Fix serious bug in sched_clock() on sparc64


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

------------------
From: David S. Miller <[email protected]>

Unfortunately, sparc64 doesn't have an easy way to do a "64 X 64 -->
128" bit multiply like PowerPC and IA64 do. We were doing a
"64 X 64 --> 64" bit multiple which causes overflow very quickly with
a 30-bit quotient shift.

So use a quotientshift count of 10 instead of 30, just like x86 and
ARM do.

This also fixes the wrapping of printk timestamp values every ~17
seconds.

Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/sparc64/kernel/time.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/arch/sparc64/kernel/time.c
+++ linux-2.6.18/arch/sparc64/kernel/time.c
@@ -983,7 +983,7 @@ static struct time_interpolator sparc64_
};

/* The quotient formula is taken from the IA64 port. */
-#define SPARC64_NSEC_PER_CYC_SHIFT 30UL
+#define SPARC64_NSEC_PER_CYC_SHIFT 10UL
void __init time_init(void)
{
unsigned long clock = sparc64_init_timers();

--

2006-10-11 21:21:55

by Greg KH

[permalink] [raw]
Subject: [patch 41/67] rtc: lockdep fix/workaround


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

------------------
From: Peter Zijlstra <[email protected]>

BUG: warning at kernel/lockdep.c:1816/trace_hardirqs_on() (Not tainted)
[<c04051ee>] show_trace_log_lvl+0x58/0x171
[<c0405802>] show_trace+0xd/0x10
[<c040591b>] dump_stack+0x19/0x1b
[<c043abee>] trace_hardirqs_on+0xa2/0x11e
[<c06143c3>] _spin_unlock_irq+0x22/0x26
[<c0541540>] rtc_get_rtc_time+0x32/0x176
[<c0419ba4>] hpet_rtc_interrupt+0x92/0x14d
[<c0450f94>] handle_IRQ_event+0x20/0x4d
[<c0451055>] __do_IRQ+0x94/0xef
[<c040678d>] do_IRQ+0x9e/0xbd
[<c0404a49>] common_interrupt+0x25/0x2c
DWARF2 unwinder stuck at common_interrupt+0x25/0x2c

Signed-off-by: Peter Zijlstra <[email protected]>
Acked-by: Ingo Molnar <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/char/rtc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/drivers/char/rtc.c
+++ linux-2.6.18/drivers/char/rtc.c
@@ -209,11 +209,12 @@ static const unsigned char days_in_mo[]
*/
static inline unsigned char rtc_is_updating(void)
{
+ unsigned long flags;
unsigned char uip;

- spin_lock_irq(&rtc_lock);
+ spin_lock_irqsave(&rtc_lock, flags);
uip = (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP);
- spin_unlock_irq(&rtc_lock);
+ spin_unlock_irqrestore(&rtc_lock, flags);
return uip;
}


--

2006-10-11 21:21:24

by Greg KH

[permalink] [raw]
Subject: [patch 37/67] powerpc: fix building gdb against asm/ptrace.h


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

------------------
From: Arnd Bergmann <[email protected]>

Ulrich Weigand found a bug with the current version of the
asm-powerpc/ptrace.h that prevents building at least the
SPU target version of gdb, since some ptrace opcodes are
not defined.

The problem seems to have originated in the merging of 32 and
64 bit versions of that file, the problem is that some opcodes
are only valid on 64 bit kernels, but are also used by 32 bit
programs, so they can't depends on the __powerpc64__ symbol.

Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-powerpc/ptrace.h | 4 ----
1 file changed, 4 deletions(-)

--- linux-2.6.18.orig/include/asm-powerpc/ptrace.h
+++ linux-2.6.18/include/asm-powerpc/ptrace.h
@@ -215,12 +215,10 @@ do { \
#define PTRACE_GETVRREGS 18
#define PTRACE_SETVRREGS 19

-#ifndef __powerpc64__
/* Get/set all the upper 32-bits of the SPE registers, accumulator, and
* spefscr, in one go */
#define PTRACE_GETEVRREGS 20
#define PTRACE_SETEVRREGS 21
-#endif /* __powerpc64__ */

/*
* Get or set a debug register. The first 16 are DABR registers and the
@@ -235,7 +233,6 @@ do { \
#define PPC_PTRACE_GETFPREGS 0x97 /* Get FPRs 0 - 31 */
#define PPC_PTRACE_SETFPREGS 0x96 /* Set FPRs 0 - 31 */

-#ifdef __powerpc64__
/* Calls to trace a 64bit program from a 32bit program */
#define PPC_PTRACE_PEEKTEXT_3264 0x95
#define PPC_PTRACE_PEEKDATA_3264 0x94
@@ -243,6 +240,5 @@ do { \
#define PPC_PTRACE_POKEDATA_3264 0x92
#define PPC_PTRACE_PEEKUSR_3264 0x91
#define PPC_PTRACE_POKEUSR_3264 0x90
-#endif /* __powerpc64__ */

#endif /* _ASM_POWERPC_PTRACE_H */

--

2006-10-11 21:18:24

by Greg KH

[permalink] [raw]
Subject: [patch 47/67] load_module: no BUG if module_subsys uninitialized


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

------------------
From: "Ed Swierk" <[email protected]>

Invoking load_module() before param_sysfs_init() is called crashes in
mod_sysfs_setup(), since the kset in module_subsys is not initialized yet.

In my case, net-pf-1 is getting modprobed as a result of hotplug trying to
create a UNIX socket. Calls to hotplug begin after the topology_init
initcall.

Another patch for the same symptom (module_subsys-initialize-earlier.patch)
moves param_sysfs_init() to the subsys initcalls, but this is still not
early enough in the boot process in some cases. In particular,
topology_init() causes /sbin/hotplug to run, which requests net-pf-1 (the
UNIX socket protocol) which can be compiled as a module. Moving
param_sysfs_init() to the postcore initcalls fixes this particular race,
but there might well be other cases where a usermodehelper causes a module
to load earlier still.

The patch makes load_module() return an error rather than crashing the
kernel if invoked before module_subsys is initialized.

Cc: Mark Huang <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
kernel/module.c | 6 ++++++
1 file changed, 6 insertions(+)

--- linux-2.6.18.orig/kernel/module.c
+++ linux-2.6.18/kernel/module.c
@@ -1054,6 +1054,12 @@ static int mod_sysfs_setup(struct module
{
int err;

+ if (!module_subsys.kset.subsys) {
+ printk(KERN_ERR "%s: module_subsys not initialized\n",
+ mod->name);
+ err = -EINVAL;
+ goto out;
+ }
memset(&mod->mkobj.kobj, 0, sizeof(mod->mkobj.kobj));
err = kobject_set_name(&mod->mkobj.kobj, "%s", mod->name);
if (err)

--

2006-10-11 21:22:07

by Greg KH

[permalink] [raw]
Subject: [patch 42/67] do not free non slab allocated per_cpu_pageset


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

------------------
From: David Rientjes <[email protected]>

Stops panic associated with attempting to free a non slab-allocated
per_cpu_pageset.

Signed-off-by: David Rientjes <[email protected]>
Acked-by: Christoph Lameter <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
mm/page_alloc.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

--- linux-2.6.18.orig/mm/page_alloc.c
+++ linux-2.6.18/mm/page_alloc.c
@@ -1845,8 +1845,10 @@ static inline void free_zone_pagesets(in
for_each_zone(zone) {
struct per_cpu_pageset *pset = zone_pcp(zone, cpu);

+ /* Free per_cpu_pageset if it is slab allocated */
+ if (pset != &boot_pageset[cpu])
+ kfree(pset);
zone_pcp(zone, cpu) = NULL;
- kfree(pset);
}
}


--

2006-10-11 21:23:07

by Greg KH

[permalink] [raw]
Subject: [patch 40/67] i386 bootioremap / kexec fix


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

------------------
From: keith mannthey <[email protected]>

With CONFIG_PHYSICAL_START set to a non default values the i386
boot_ioremap code calculated its pte index wrong and users of boot_ioremap
have their areas incorrectly mapped (for me SRAT table not mapped during
early boot). This patch removes the addr < BOOT_PTE_PTRS constraint.

Signed-off-by: Keith Mannthey<[email protected]>
Cc: Vivek Goyal <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Adrian Bunk <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/i386/mm/boot_ioremap.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/arch/i386/mm/boot_ioremap.c
+++ linux-2.6.18/arch/i386/mm/boot_ioremap.c
@@ -29,8 +29,11 @@
*/

#define BOOT_PTE_PTRS (PTRS_PER_PTE*2)
-#define boot_pte_index(address) \
- (((address) >> PAGE_SHIFT) & (BOOT_PTE_PTRS - 1))
+
+static unsigned long boot_pte_index(unsigned long vaddr)
+{
+ return __pa(vaddr) >> PAGE_SHIFT;
+}

static inline boot_pte_t* boot_vaddr_to_pte(void *address)
{

--

2006-10-11 21:19:36

by Greg KH

[permalink] [raw]
Subject: [patch 48/67] Fix VIDIOC_ENUMSTD bug


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

------------------
From: Jonathan Corbet <[email protected]>

The v4l2 API documentation for VIDIOC_ENUMSTD says:

To enumerate all standards applications shall begin at index
zero, incrementing by one until the driver returns EINVAL.

The actual code, however, tests the index this way:

if (index<=0 || index >= vfd->tvnormsize) {
ret=-EINVAL;

So any application which passes in index=0 gets EINVAL right off the bat
- and, in fact, this is what happens to mplayer. So I think the
following patch is called for, and maybe even appropriate for a 2.6.18.x
stable release.

Signed-off-by: Jonathan Corbet <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
drivers/media/video/videodev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/drivers/media/video/videodev.c
+++ linux-2.6.18/drivers/media/video/videodev.c
@@ -836,7 +836,7 @@ static int __video_do_ioctl(struct inode
break;
}

- if (index<=0 || index >= vfd->tvnormsize) {
+ if (index < 0 || index >= vfd->tvnormsize) {
ret=-EINVAL;
break;
}

--

2006-10-11 21:08:04

by Greg KH

[permalink] [raw]
Subject: [patch 35/67] Clean up exported headers on CRIS


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

------------------
From: David Woodhouse <[email protected]>

This fixes most of the issues with exported headers on CRIS, although
we do still need to deal with the asm/arch symlink.

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-cris/Kbuild | 4 ++++
include/asm-cris/arch-v10/Kbuild | 2 ++
include/asm-cris/arch-v32/Kbuild | 2 ++
include/asm-cris/byteorder.h | 3 ++-
include/asm-cris/elf.h | 8 +++++---
include/asm-cris/page.h | 8 ++++----
include/asm-cris/posix_types.h | 9 +++------
include/asm-cris/unistd.h | 4 +---
8 files changed, 23 insertions(+), 17 deletions(-)

--- linux-2.6.18.orig/include/asm-cris/Kbuild
+++ linux-2.6.18/include/asm-cris/Kbuild
@@ -1 +1,5 @@
include include/asm-generic/Kbuild.asm
+
+header-y += arch-v10/ arch-v32/
+
+unifdef-y += rs485.h
--- /dev/null
+++ linux-2.6.18/include/asm-cris/arch-v10/Kbuild
@@ -0,0 +1,2 @@
+header-y += ptrace.h
+header-y += user.h
--- /dev/null
+++ linux-2.6.18/include/asm-cris/arch-v32/Kbuild
@@ -0,0 +1,2 @@
+header-y += ptrace.h
+header-y += user.h
--- linux-2.6.18.orig/include/asm-cris/byteorder.h
+++ linux-2.6.18/include/asm-cris/byteorder.h
@@ -3,14 +3,15 @@

#ifdef __GNUC__

+#ifdef __KERNEL__
#include <asm/arch/byteorder.h>

/* defines are necessary because the other files detect the presence
* of a defined __arch_swab32, not an inline
*/
-
#define __arch__swab32(x) ___arch__swab32(x)
#define __arch__swab16(x) ___arch__swab16(x)
+#endif /* __KERNEL__ */

#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
# define __BYTEORDER_HAS_U64__
--- linux-2.6.18.orig/include/asm-cris/elf.h
+++ linux-2.6.18/include/asm-cris/elf.h
@@ -5,7 +5,6 @@
* ELF register definitions..
*/

-#include <asm/arch/elf.h>
#include <asm/user.h>

#define R_CRIS_NONE 0
@@ -46,6 +45,9 @@ typedef unsigned long elf_fpregset_t;
#define ELF_DATA ELFDATA2LSB
#define ELF_ARCH EM_CRIS

+#ifdef __KERNEL__
+#include <asm/arch/elf.h>
+
/* The master for these definitions is {binutils}/include/elf/cris.h: */
/* User symbols in this file have a leading underscore. */
#define EF_CRIS_UNDERSCORE 0x00000001
@@ -87,8 +89,8 @@ typedef unsigned long elf_fpregset_t;

#define ELF_PLATFORM (NULL)

-#ifdef __KERNEL__
#define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
-#endif
+
+#endif /* __KERNEL__ */

#endif
--- linux-2.6.18.orig/include/asm-cris/page.h
+++ linux-2.6.18/include/asm-cris/page.h
@@ -1,6 +1,8 @@
#ifndef _CRIS_PAGE_H
#define _CRIS_PAGE_H

+#ifdef __KERNEL__
+
#include <asm/arch/page.h>

/* PAGE_SHIFT determines the page size */
@@ -12,8 +14,6 @@
#endif
#define PAGE_MASK (~(PAGE_SIZE-1))

-#ifdef __KERNEL__
-
#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
#define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE)

@@ -73,10 +73,10 @@ typedef struct { unsigned long pgprot; }
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)

-#endif /* __KERNEL__ */
-
#include <asm-generic/memory_model.h>
#include <asm-generic/page.h>

+#endif /* __KERNEL__ */
+
#endif /* _CRIS_PAGE_H */

--- linux-2.6.18.orig/include/asm-cris/posix_types.h
+++ linux-2.6.18/include/asm-cris/posix_types.h
@@ -6,8 +6,6 @@
#ifndef __ARCH_CRIS_POSIX_TYPES_H
#define __ARCH_CRIS_POSIX_TYPES_H

-#include <asm/bitops.h>
-
/*
* This file is generally used by user-level software, so you need to
* be a little careful about namespace pollution etc. Also, we cannot
@@ -53,9 +51,8 @@ typedef struct {
#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
} __kernel_fsid_t;

-/* should this ifdef be here ? */
-
-#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+#ifdef __KERNEL__
+#include <asm/bitops.h>

#undef __FD_SET
#define __FD_SET(fd,fdsetp) set_bit(fd, (void *)(fdsetp))
@@ -69,6 +66,6 @@ typedef struct {
#undef __FD_ZERO
#define __FD_ZERO(fdsetp) memset((void *)(fdsetp), 0, __FDSET_LONGS << 2)

-#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
+#endif /* __KERNEL__ */

#endif /* __ARCH_CRIS_POSIX_TYPES_H */
--- linux-2.6.18.orig/include/asm-cris/unistd.h
+++ linux-2.6.18/include/asm-cris/unistd.h
@@ -1,8 +1,6 @@
#ifndef _ASM_CRIS_UNISTD_H_
#define _ASM_CRIS_UNISTD_H_

-#include <asm/arch/unistd.h>
-
/*
* This file contains the system call numbers, and stub macros for libc.
*/
@@ -299,6 +297,7 @@

#define NR_syscalls 289

+#include <asm/arch/unistd.h>

#define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR
@@ -322,7 +321,6 @@
#define __ARCH_WANT_SYS_SIGPENDING
#define __ARCH_WANT_SYS_SIGPROCMASK
#define __ARCH_WANT_SYS_RT_SIGACTION
-#endif

#ifdef __KERNEL_SYSCALLS__


--

2006-10-11 21:22:33

by Greg KH

[permalink] [raw]
Subject: [patch 38/67] sysfs: remove duplicated dput in sysfs_update_file


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

------------------
From: Hidetoshi Seto <[email protected]>

Following function can drops d_count twice against one reference
by lookup_one_len.

<SOURCE>
/**
* sysfs_update_file - update the modified timestamp on an object attribute.
* @kobj: object we're acting for.
* @attr: attribute descriptor.
*/
int sysfs_update_file(struct kobject * kobj, const struct attribute * attr)
{
struct dentry * dir = kobj->dentry;
struct dentry * victim;
int res = -ENOENT;

mutex_lock(&dir->d_inode->i_mutex);
victim = lookup_one_len(attr->name, dir, strlen(attr->name));
if (!IS_ERR(victim)) {
/* make sure dentry is really there */
if (victim->d_inode &&
(victim->d_parent->d_inode == dir->d_inode)) {
victim->d_inode->i_mtime = CURRENT_TIME;
fsnotify_modify(victim);

/**
* Drop reference from initial sysfs_get_dentry().
*/
dput(victim);
res = 0;
} else
d_drop(victim);

/**
* Drop the reference acquired from sysfs_get_dentry() above.
*/
dput(victim);
}
mutex_unlock(&dir->d_inode->i_mutex);

return res;
}
</SOURCE>

PCI-hotplug (drivers/pci/hotplug/pci_hotplug_core.c) is only user of
this function. I confirmed that dentry of /sys/bus/pci/slots/XXX/*
have negative d_count value.

This patch removes unnecessary dput().

Signed-off-by: Hidetoshi Seto <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
fs/sysfs/file.c | 5 -----
1 file changed, 5 deletions(-)

--- linux-2.6.18.orig/fs/sysfs/file.c
+++ linux-2.6.18/fs/sysfs/file.c
@@ -483,11 +483,6 @@ int sysfs_update_file(struct kobject * k
(victim->d_parent->d_inode == dir->d_inode)) {
victim->d_inode->i_mtime = CURRENT_TIME;
fsnotify_modify(victim);
-
- /**
- * Drop reference from initial sysfs_get_dentry().
- */
- dput(victim);
res = 0;
} else
d_drop(victim);

--

2006-10-11 21:22:32

by Greg KH

[permalink] [raw]
Subject: [patch 39/67] powerpc: Fix ohare IDE irq workaround on old powermacs

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

------------------
From: Benjamin Herrenschmidt <[email protected]>

Looks like a workaround for old bogus OF bitrot... This fixes it and hence fixes
boot on some performa machines.

Signed-off-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/ide/ppc/pmac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/drivers/ide/ppc/pmac.c
+++ linux-2.6.18/drivers/ide/ppc/pmac.c
@@ -1326,7 +1326,7 @@ pmac_ide_macio_attach(struct macio_dev *
if (macio_irq_count(mdev) == 0) {
printk(KERN_WARNING "ide%d: no intrs for device %s, using 13\n",
i, mdev->ofdev.node->full_name);
- irq = 13;
+ irq = irq_create_mapping(NULL, 13);
} else
irq = macio_irq(mdev, 0);


--

2006-10-11 21:23:08

by Greg KH

[permalink] [raw]
Subject: [patch 28/67] Fix exported headers for SPARC, SPARC64


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

------------------
From: David Woodhouse <[email protected]>

Mostly removing files which have no business being used in userspace.

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-sparc/Kbuild | 7 -------
include/asm-sparc/page.h | 8 ++++----
include/asm-sparc64/Kbuild | 5 +----
include/asm-sparc64/page.h | 9 ++++-----
include/asm-sparc64/shmparam.h | 2 ++
5 files changed, 11 insertions(+), 20 deletions(-)

--- linux-2.6.18.orig/include/asm-sparc/Kbuild
+++ linux-2.6.18/include/asm-sparc/Kbuild
@@ -2,20 +2,13 @@ include include/asm-generic/Kbuild.asm

header-y += apc.h
header-y += asi.h
-header-y += auxio.h
header-y += bpp.h
-header-y += head.h
-header-y += ipc.h
header-y += jsflash.h
header-y += openpromio.h
-header-y += pbm.h
header-y += pconf.h
-header-y += pgtsun4.h
header-y += reg.h
header-y += traps.h
-header-y += turbosparc.h
header-y += vfc_ioctls.h
-header-y += winmacro.h

unifdef-y += fbio.h
unifdef-y += perfctr.h
--- linux-2.6.18.orig/include/asm-sparc/page.h
+++ linux-2.6.18/include/asm-sparc/page.h
@@ -8,6 +8,8 @@
#ifndef _SPARC_PAGE_H
#define _SPARC_PAGE_H

+#ifdef __KERNEL__
+
#ifdef CONFIG_SUN4
#define PAGE_SHIFT 13
#else
@@ -21,8 +23,6 @@
#endif
#define PAGE_MASK (~(PAGE_SIZE-1))

-#ifdef __KERNEL__
-
#include <asm/btfixup.h>

#ifndef __ASSEMBLY__
@@ -160,9 +160,9 @@ extern unsigned long pfn_base;
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)

-#endif /* __KERNEL__ */
-
#include <asm-generic/memory_model.h>
#include <asm-generic/page.h>

+#endif /* __KERNEL__ */
+
#endif /* _SPARC_PAGE_H */
--- linux-2.6.18.orig/include/asm-sparc64/Kbuild
+++ linux-2.6.18/include/asm-sparc64/Kbuild
@@ -8,15 +8,12 @@ header-y += apb.h
header-y += asi.h
header-y += bbc.h
header-y += bpp.h
+header-y += const.h
header-y += display7seg.h
header-y += envctrl.h
-header-y += floppy.h
header-y += ipc.h
-header-y += kdebug.h
-header-y += mostek.h
header-y += openprom.h
header-y += openpromio.h
-header-y += parport.h
header-y += pconf.h
header-y += psrcompat.h
header-y += pstate.h
--- linux-2.6.18.orig/include/asm-sparc64/page.h
+++ linux-2.6.18/include/asm-sparc64/page.h
@@ -3,6 +3,8 @@
#ifndef _SPARC64_PAGE_H
#define _SPARC64_PAGE_H

+#ifdef __KERNEL__
+
#include <asm/const.h>

#if defined(CONFIG_SPARC64_PAGE_SIZE_8KB)
@@ -27,8 +29,6 @@
#define DCACHE_ALIASING_POSSIBLE
#endif

-#ifdef __KERNEL__
-
#if defined(CONFIG_HUGETLB_PAGE_SIZE_4MB)
#define HPAGE_SHIFT 22
#elif defined(CONFIG_HUGETLB_PAGE_SIZE_512K)
@@ -141,8 +141,7 @@ typedef unsigned long pgprot_t;
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)

-#endif /* !(__KERNEL__) */
-
#include <asm-generic/page.h>

-#endif /* !(_SPARC64_PAGE_H) */
+#endif /* __KERNEL__ */
+#endif /* _SPARC64_PAGE_H */
--- linux-2.6.18.orig/include/asm-sparc64/shmparam.h
+++ linux-2.6.18/include/asm-sparc64/shmparam.h
@@ -1,6 +1,7 @@
/* $Id: shmparam.h,v 1.5 2001/09/24 21:17:57 kanoj Exp $ */
#ifndef _ASMSPARC64_SHMPARAM_H
#define _ASMSPARC64_SHMPARAM_H
+#ifdef __KERNEL__

#include <asm/spitfire.h>

@@ -8,4 +9,5 @@
/* attach addr a multiple of this */
#define SHMLBA ((PAGE_SIZE > L1DCACHE_SIZE) ? PAGE_SIZE : L1DCACHE_SIZE)

+#endif /* __KERNEL__ */
#endif /* _ASMSPARC64_SHMPARAM_H */

--

2006-10-11 21:23:46

by Greg KH

[permalink] [raw]
Subject: [patch 22/67] sky2 network driver device ids


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

------------------
From: Stephen Hemminger <[email protected]>

This makes the id table match the current netdev upstream tree.

From: Stephen Hemminger <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/net/sky2.c | 8 ++++++++
1 file changed, 8 insertions(+)

--- linux-2.6.18.orig/drivers/net/sky2.c
+++ linux-2.6.18/drivers/net/sky2.c
@@ -106,6 +106,7 @@ static const struct pci_device_id sky2_i
{ PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) },
{ PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) },
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4b00) }, /* DGE-560T */
+ { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4001) }, /* DGE-550SX */
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4340) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4341) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4342) },
@@ -117,10 +118,17 @@ static const struct pci_device_id sky2_i
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4350) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4351) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4352) },
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4353) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4360) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) },
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) },
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4364) },
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4365) },
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4366) },
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4367) },
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4368) },
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4369) },
{ 0 }
};


--

2006-10-11 21:24:19

by Greg KH

[permalink] [raw]
Subject: [patch 32/67] Remove UML header export


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

------------------
From: David Woodhouse <[email protected]>

No need for UML to export headers for userspace to build against.

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-um/Kbuild | 1 -
1 file changed, 1 deletion(-)

--- linux-2.6.18.orig/include/asm-um/Kbuild
+++ /dev/null
@@ -1 +0,0 @@
-include include/asm-generic/Kbuild.asm

--

2006-10-11 21:26:31

by Greg KH

[permalink] [raw]
Subject: [patch 21/67] sky2: tx pause bug fix

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

------------------
From: Stephen Hemminger <[email protected]>

The sky2 driver will hang if transmit flow control is enabled
and it receives a pause frame. The pause frame gets partially
processed by hardware but never makes it through to the correct
logic. This patch made it into 2.6.17 stable, but never got
accepted for 2.6.18, so it will have to go into 2.6.18.1

See also: http://bugzilla.kernel.org/show_bug.cgi?id=6839

Signed-off-by: Stephen Hemminger <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/net/sky2.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/drivers/net/sky2.h
+++ linux-2.6.18/drivers/net/sky2.h
@@ -1566,7 +1566,7 @@ enum {

GMR_FS_ANY_ERR = GMR_FS_RX_FF_OV | GMR_FS_CRC_ERR |
GMR_FS_FRAGMENT | GMR_FS_LONG_ERR |
- GMR_FS_MII_ERR | GMR_FS_BAD_FC | GMR_FS_GOOD_FC |
+ GMR_FS_MII_ERR | GMR_FS_BAD_FC |
GMR_FS_UN_SIZE | GMR_FS_JABBER,
};


--

2006-10-11 21:28:44

by Greg KH

[permalink] [raw]
Subject: [patch 14/67] USB: Allow compile in g_ether, fix typo


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

------------------
From: Tony Lindgren <[email protected]>

Allows compiling g_ether in and fixes a typo with MUSB_HDRC

Signed-off-by: Tony Lindgren <[email protected]>
Cc: David Brownell <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/usb/gadget/ether.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/drivers/usb/gadget/ether.c
+++ linux-2.6.18/drivers/usb/gadget/ether.c
@@ -262,7 +262,7 @@ MODULE_PARM_DESC(host_addr, "Host Ethern
#define DEV_CONFIG_CDC
#endif

-#ifdef CONFIG_USB_GADGET_MUSBHDRC
+#ifdef CONFIG_USB_GADGET_MUSB_HDRC
#define DEV_CONFIG_CDC
#endif

@@ -2564,7 +2564,7 @@ static struct usb_gadget_driver eth_driv

.function = (char *) driver_desc,
.bind = eth_bind,
- .unbind = __exit_p(eth_unbind),
+ .unbind = eth_unbind,

.setup = eth_setup,
.disconnect = eth_disconnect,

--

2006-10-11 21:23:47

by Greg KH

[permalink] [raw]
Subject: [patch 34/67] Fix v850 exported headers


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

------------------
From: David Woodhouse <[email protected]>

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-v850/page.h | 7 ++++---
include/asm-v850/param.h | 4 ++--
2 files changed, 6 insertions(+), 5 deletions(-)

--- linux-2.6.18.orig/include/asm-v850/page.h
+++ linux-2.6.18/include/asm-v850/page.h
@@ -14,6 +14,8 @@
#ifndef __V850_PAGE_H__
#define __V850_PAGE_H__

+#ifdef __KERNEL__
+
#include <asm/machdep.h>


@@ -32,7 +34,6 @@
#endif


-#ifdef __KERNEL__
#ifndef __ASSEMBLY__

#define STRICT_MM_TYPECHECKS
@@ -122,9 +123,9 @@ typedef unsigned long pgprot_t;
#define __va(x) ((void *)__phys_to_virt ((unsigned long)(x)))


-#endif /* KERNEL */
-
#include <asm-generic/memory_model.h>
#include <asm-generic/page.h>

+#endif /* KERNEL */
+
#endif /* __V850_PAGE_H__ */
--- linux-2.6.18.orig/include/asm-v850/param.h
+++ linux-2.6.18/include/asm-v850/param.h
@@ -14,8 +14,6 @@
#ifndef __V850_PARAM_H__
#define __V850_PARAM_H__

-#include <asm/machdep.h> /* For HZ */
-
#define EXEC_PAGESIZE 4096

#ifndef NOGROUP
@@ -25,6 +23,8 @@
#define MAXHOSTNAMELEN 64 /* max length of hostname */

#ifdef __KERNEL__
+#include <asm/machdep.h> /* For HZ */
+
# define USER_HZ 100
# define CLOCKS_PER_SEC USER_HZ
#endif

--

2006-10-11 21:27:33

by Greg KH

[permalink] [raw]
Subject: [patch 12/67] S390: user readable uninitialised kernel memory (CVE-2006-5174)


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

------------------
From: Martin Schwidefsky <[email protected]>

[S390] user readable uninitialised kernel memory.

A user space program can read uninitialised kernel memory
by appending to a file from a bad address and then reading
the result back. The cause is the copy_from_user function
that does not clear the remaining bytes of the kernel
buffer after it got a fault on the user space address.

Signed-off-by: Martin Schwidefsky <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/s390/lib/uaccess.S | 12 +++++++++++-
arch/s390/lib/uaccess64.S | 12 +++++++++++-
2 files changed, 22 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/arch/s390/lib/uaccess.S
+++ linux-2.6.18/arch/s390/lib/uaccess.S
@@ -40,7 +40,17 @@ __copy_from_user_asm:
# move with the reduced length which is < 256
5: mvcp 0(%r5,%r2),0(%r4),%r0
slr %r3,%r5
-6: lr %r2,%r3
+ alr %r2,%r5
+6: lgr %r5,%r3 # copy remaining size
+ ahi %r5,-1 # subtract 1 for xc loop
+ bras %r4,8f
+ xc 0(1,%2),0(%2)
+7: xc 0(256,%2),0(%2)
+ la %r2,256(%r2)
+8: ahji %r5,-256
+ jnm 7b
+ ex %r5,0(%r2)
+9: lr %r2,%r3
br %r14
.section __ex_table,"a"
.long 0b,4b
--- linux-2.6.18.orig/arch/s390/lib/uaccess64.S
+++ linux-2.6.18/arch/s390/lib/uaccess64.S
@@ -40,7 +40,17 @@ __copy_from_user_asm:
# move with the reduced length which is < 256
5: mvcp 0(%r5,%r2),0(%r4),%r0
slgr %r3,%r5
-6: lgr %r2,%r3
+ algr %r2,%r5
+6: lgr %r5,%r3 # copy remaining size
+ aghi %r5,-1 # subtract 1 for xc loop
+ bras %r4,8f
+ xc 0(1,%r2),0(%r2)
+7: xc 0(256,%r2),0(%r2)
+ la %r2,256(%r2)
+8: aghi %r5,-256
+ jnm 7b
+ ex %r5,0(%r2)
+9: lgr %r2,%r3
br %r14
.section __ex_table,"a"
.quad 0b,4b

--

2006-10-11 21:23:46

by Greg KH

[permalink] [raw]
Subject: [patch 26/67] Fix make headers_check on sh64


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

------------------
From: Paul Mundt <[email protected]>

Cleanup for user headers, as noted:

asm-sh64/page.h requires asm-generic/memory_model.h, which does not exist in exported headers
asm-sh64/shmparam.h requires asm/cache.h, which does not exist in exported headers
asm-sh64/signal.h requires asm/processor.h, which does not exist in exported headers
asm-sh64/user.h requires asm/processor.h, which does not exist in exported headers

Signed-off-by: Paul Mundt <[email protected]>
Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-sh64/page.h | 3 +--
include/asm-sh64/shmparam.h | 16 ++++------------
include/asm-sh64/signal.h | 1 -
include/asm-sh64/user.h | 1 -
4 files changed, 5 insertions(+), 16 deletions(-)

--- linux-2.6.18.orig/include/asm-sh64/page.h
+++ linux-2.6.18/include/asm-sh64/page.h
@@ -112,9 +112,8 @@ typedef struct { unsigned long pgprot; }
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)

-#endif /* __KERNEL__ */
-
#include <asm-generic/memory_model.h>
#include <asm-generic/page.h>

+#endif /* __KERNEL__ */
#endif /* __ASM_SH64_PAGE_H */
--- linux-2.6.18.orig/include/asm-sh64/shmparam.h
+++ linux-2.6.18/include/asm-sh64/shmparam.h
@@ -2,19 +2,11 @@
#define __ASM_SH64_SHMPARAM_H

/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * include/asm-sh64/shmparam.h
- *
- * Copyright (C) 2000, 2001 Paolo Alberelli
- *
+ * Set this to a sensible safe default, we'll work out the specifics for the
+ * align mask from the cache descriptor at run-time.
*/
+#define SHMLBA 0x4000

-#include <asm/cache.h>
-
-/* attach addr a multiple of this */
-#define SHMLBA (cpu_data->dcache.sets * L1_CACHE_BYTES)
+#define __ARCH_FORCE_SHMLBA

#endif /* __ASM_SH64_SHMPARAM_H */
--- linux-2.6.18.orig/include/asm-sh64/signal.h
+++ linux-2.6.18/include/asm-sh64/signal.h
@@ -13,7 +13,6 @@
*/

#include <linux/types.h>
-#include <asm/processor.h>

/* Avoid too many header ordering problems. */
struct siginfo;
--- linux-2.6.18.orig/include/asm-sh64/user.h
+++ linux-2.6.18/include/asm-sh64/user.h
@@ -13,7 +13,6 @@
*/

#include <linux/types.h>
-#include <asm/processor.h>
#include <asm/ptrace.h>
#include <asm/page.h>


--

2006-10-11 21:05:53

by Greg KH

[permalink] [raw]
Subject: [patch 20/67] netdrvr: lp486e: fix typo


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

------------------
From: Jeff Garzik <[email protected]>

inside #if 0'd code, but it bugged me.

Really, we should probably just delete the driver.

Signed-off-by: Jeff Garzik <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/net/lp486e.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--- linux-2.6.18.orig/drivers/net/lp486e.c
+++ linux-2.6.18/drivers/net/lp486e.c
@@ -442,16 +442,16 @@ init_rx_bufs(struct net_device *dev, int
if (rbd) {
rbd->pad = 0;
rbd->count = 0;
- rbd->skb = dev_alloc_skb(RX_SKB_SIZE);
+ rbd->skb = dev_alloc_skb(RX_SKBSIZE);
if (!rbd->skb) {
printk("dev_alloc_skb failed");
}
rbd->next = rfd->rbd;
if (i) {
rfd->rbd->prev = rbd;
- rbd->size = RX_SKB_SIZE;
+ rbd->size = RX_SKBSIZE;
} else {
- rbd->size = (RX_SKB_SIZE | RBD_EL);
+ rbd->size = (RX_SKBSIZE | RBD_EL);
lp->rbd_tail = rbd;
}


--

2006-10-11 21:23:46

by Greg KH

[permalink] [raw]
Subject: [patch 27/67] Fix make headers_check on m32r


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

------------------
From: David Woodhouse <[email protected]>

> asm-m32r/page.h requires asm-generic/memory_model.h, which does not exist
> asm-m32r/ptrace.h requires asm/m32r.h, which does not exist
> asm-m32r/signal.h requires linux/linkage.h, which does not exist
> asm-m32r/unistd.h requires asm/syscall.h, which does not exist
> asm-m32r/user.h requires asm/processor.h, which does not exist

Signed-off-by: Hirokazu Takata <[email protected]>
Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-m32r/page.h | 3 +--
include/asm-m32r/ptrace.h | 4 ++--
include/asm-m32r/signal.h | 1 -
include/asm-m32r/unistd.h | 4 ++--
include/asm-m32r/user.h | 1 -
5 files changed, 5 insertions(+), 8 deletions(-)

--- linux-2.6.18.orig/include/asm-m32r/page.h
+++ linux-2.6.18/include/asm-m32r/page.h
@@ -87,10 +87,9 @@ typedef struct { unsigned long pgprot; }

#define devmem_is_allowed(x) 1

-#endif /* __KERNEL__ */
-
#include <asm-generic/memory_model.h>
#include <asm-generic/page.h>

+#endif /* __KERNEL__ */
#endif /* _ASM_M32R_PAGE_H */

--- linux-2.6.18.orig/include/asm-m32r/ptrace.h
+++ linux-2.6.18/include/asm-m32r/ptrace.h
@@ -12,8 +12,6 @@
* Copyright (C) 2001-2002, 2004 Hirokazu Takata <takata at linux-m32r.org>
*/

-#include <asm/m32r.h> /* M32R_PSW_BSM, M32R_PSW_BPM */
-
/* 0 - 13 are integer registers (general purpose registers). */
#define PT_R4 0
#define PT_R5 1
@@ -140,6 +138,8 @@ struct pt_regs {

#ifdef __KERNEL__

+#include <asm/m32r.h> /* M32R_PSW_BSM, M32R_PSW_BPM */
+
#define __ARCH_SYS_PTRACE 1

#if defined(CONFIG_ISA_M32R2) || defined(CONFIG_CHIP_VDEC2)
--- linux-2.6.18.orig/include/asm-m32r/signal.h
+++ linux-2.6.18/include/asm-m32r/signal.h
@@ -6,7 +6,6 @@
/* orig : i386 2.4.18 */

#include <linux/types.h>
-#include <linux/linkage.h>
#include <linux/time.h>
#include <linux/compiler.h>

--- linux-2.6.18.orig/include/asm-m32r/unistd.h
+++ linux-2.6.18/include/asm-m32r/unistd.h
@@ -3,8 +3,6 @@

/* $Id$ */

-#include <asm/syscall.h> /* SYSCALL_* */
-
/*
* This file contains the system call numbers.
*/
@@ -303,6 +301,8 @@
* <asm-m32r/errno.h>
*/

+#include <asm/syscall.h> /* SYSCALL_* */
+
#define __syscall_return(type, res) \
do { \
if ((unsigned long)(res) >= (unsigned long)(-(124 + 1))) { \
--- linux-2.6.18.orig/include/asm-m32r/user.h
+++ linux-2.6.18/include/asm-m32r/user.h
@@ -8,7 +8,6 @@
*/

#include <linux/types.h>
-#include <asm/processor.h>
#include <asm/ptrace.h>
#include <asm/page.h>


--

2006-10-11 21:24:05

by Greg KH

[permalink] [raw]
Subject: [patch 33/67] Dont advertise (or allow) headers_{install,check} where inappropriate.


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

------------------
From: David Woodhouse <[email protected]>

For architectures which don't have the include/asm-$(ARCH)/Kbuild file,
like ARM26, UM, etc.

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
Makefile | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/Makefile
+++ linux-2.6.18/Makefile
@@ -894,6 +894,9 @@ export INSTALL_HDR_PATH

PHONY += headers_install
headers_install: include/linux/version.h
+ @if [ ! -r include/asm-$(ARCH)/Kbuild ]; then \
+ echo '*** Error: Headers not exportable for this architecture ($(ARCH))'; \
+ exit 1 ; fi
$(Q)unifdef -Ux /dev/null
$(Q)rm -rf $(INSTALL_HDR_PATH)/include
$(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include
@@ -1076,13 +1079,17 @@ help:
@echo ' cscope - Generate cscope index'
@echo ' kernelrelease - Output the release version string'
@echo ' kernelversion - Output the version stored in Makefile'
- @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'
+ @if [ -r include/asm-$(ARCH)/Kbuild ]; then \
+ echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
+ fi
@echo ' (default: $(INSTALL_HDR_PATH))'
@echo ''
@echo 'Static analysers'
@echo ' checkstack - Generate a list of stack hogs'
@echo ' namespacecheck - Name space analysis on compiled kernel'
- @echo ' headers_check - Sanity check on exported headers'
+ @if [ -r include/asm-$(ARCH)/Kbuild ]; then \
+ echo ' headers_check - Sanity check on exported headers'; \
+ fi
@echo ''
@echo 'Kernel packaging:'
@$(MAKE) $(build)=$(package-dir) help

--

2006-10-11 21:26:29

by Greg KH

[permalink] [raw]
Subject: [patch 30/67] Fix H8300 exported headers.


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

------------------
From: David Woodhouse <[email protected]>

Just clean up asm/page.h

Signed-off-by: David Woodhouse <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
include/asm-h8300/page.h | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

--- linux-2.6.18.orig/include/asm-h8300/page.h
+++ linux-2.6.18/include/asm-h8300/page.h
@@ -1,6 +1,7 @@
#ifndef _H8300_PAGE_H
#define _H8300_PAGE_H

+#ifdef __KERNEL__

/* PAGE_SHIFT determines the page size */

@@ -8,8 +9,6 @@
#define PAGE_SIZE (1UL << PAGE_SHIFT)
#define PAGE_MASK (~(PAGE_SIZE-1))

-#ifdef __KERNEL__
-
#include <asm/setup.h>

#ifndef __ASSEMBLY__
@@ -76,9 +75,9 @@ extern unsigned long memory_end;

#endif /* __ASSEMBLY__ */

-#endif /* __KERNEL__ */
-
#include <asm-generic/memory_model.h>
#include <asm-generic/page.h>

+#endif /* __KERNEL__ */
+
#endif /* _H8300_PAGE_H */

--

2006-10-11 21:28:45

by Greg KH

[permalink] [raw]
Subject: [patch 17/67] Fix longstanding load balancing bug in the scheduler


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

------------------
From: Christoph Lameter <[email protected]>

The scheduler will stop load balancing if the most busy processor contains
processes pinned via processor affinity.

The scheduler currently only does one search for busiest cpu. If it cannot
pull any tasks away from the busiest cpu because they were pinned then the
scheduler goes into a corner and sulks leaving the idle processors idle.

F.e. If you have processor 0 busy running four tasks pinned via taskset,
there are none on processor 1 and one just started two processes on
processor 2 then the scheduler will not move one of the two processes away
from processor 2.

This patch fixes that issue by forcing the scheduler to come out of its
corner and retrying the load balancing by considering other processors for
load balancing.

This patch was originally developed by John Hawkes and discussed at
http://marc.theaimsgroup.com/?l=linux-kernel&m=113901368523205&w=2.

I have removed extraneous material and gone back to equipping struct rq
with the cpu the queue is associated with since this makes the patch much
easier and it is likely that others in the future will have the same
difficulty of figuring out which processor owns which runqueue.

The overhead added through these patches is a single word on the stack if
the kernel is configured to support 32 cpus or less (32 bit). For 32 bit
environments the maximum number of cpus that can be configued is 255 which
would result in the use of 32 bytes additional on the stack. On IA64 up to
1k cpus can be configured which will result in the use of 128 additional
bytes on the stack. The maximum additional cache footprint is one
cacheline. Typically memory use will be much less than a cacheline and the
additional cpumask will be placed on the stack in a cacheline that already
contains other local variable.


Signed-off-by: Christoph Lameter <[email protected]>
Cc: John Hawkes <[email protected]>
Cc: Suresh Siddha <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Nick Piggin <[email protected]>
Cc: Peter Williams <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
kernel/sched.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 46 insertions(+), 8 deletions(-)

--- linux-2.6.18.orig/kernel/sched.c
+++ linux-2.6.18/kernel/sched.c
@@ -238,6 +238,7 @@ struct rq {
/* For active balancing */
int active_balance;
int push_cpu;
+ int cpu; /* cpu of this runqueue */

struct task_struct *migration_thread;
struct list_head migration_queue;
@@ -267,6 +268,15 @@ struct rq {

static DEFINE_PER_CPU(struct rq, runqueues);

+static inline int cpu_of(struct rq *rq)
+{
+#ifdef CONFIG_SMP
+ return rq->cpu;
+#else
+ return 0;
+#endif
+}
+
/*
* The domain tree (rq->sd) is protected by RCU's quiescent state transition.
* See detach_destroy_domains: synchronize_sched for details.
@@ -2211,7 +2221,8 @@ out:
*/
static struct sched_group *
find_busiest_group(struct sched_domain *sd, int this_cpu,
- unsigned long *imbalance, enum idle_type idle, int *sd_idle)
+ unsigned long *imbalance, enum idle_type idle, int *sd_idle,
+ cpumask_t *cpus)
{
struct sched_group *busiest = NULL, *this = NULL, *group = sd->groups;
unsigned long max_load, avg_load, total_load, this_load, total_pwr;
@@ -2248,7 +2259,12 @@ find_busiest_group(struct sched_domain *
sum_weighted_load = sum_nr_running = avg_load = 0;

for_each_cpu_mask(i, group->cpumask) {
- struct rq *rq = cpu_rq(i);
+ struct rq *rq;
+
+ if (!cpu_isset(i, *cpus))
+ continue;
+
+ rq = cpu_rq(i);

if (*sd_idle && !idle_cpu(i))
*sd_idle = 0;
@@ -2466,13 +2482,17 @@ ret:
*/
static struct rq *
find_busiest_queue(struct sched_group *group, enum idle_type idle,
- unsigned long imbalance)
+ unsigned long imbalance, cpumask_t *cpus)
{
struct rq *busiest = NULL, *rq;
unsigned long max_load = 0;
int i;

for_each_cpu_mask(i, group->cpumask) {
+
+ if (!cpu_isset(i, *cpus))
+ continue;
+
rq = cpu_rq(i);

if (rq->nr_running == 1 && rq->raw_weighted_load > imbalance)
@@ -2511,6 +2531,7 @@ static int load_balance(int this_cpu, st
struct sched_group *group;
unsigned long imbalance;
struct rq *busiest;
+ cpumask_t cpus = CPU_MASK_ALL;

if (idle != NOT_IDLE && sd->flags & SD_SHARE_CPUPOWER &&
!sched_smt_power_savings)
@@ -2518,13 +2539,15 @@ static int load_balance(int this_cpu, st

schedstat_inc(sd, lb_cnt[idle]);

- group = find_busiest_group(sd, this_cpu, &imbalance, idle, &sd_idle);
+redo:
+ group = find_busiest_group(sd, this_cpu, &imbalance, idle, &sd_idle,
+ &cpus);
if (!group) {
schedstat_inc(sd, lb_nobusyg[idle]);
goto out_balanced;
}

- busiest = find_busiest_queue(group, idle, imbalance);
+ busiest = find_busiest_queue(group, idle, imbalance, &cpus);
if (!busiest) {
schedstat_inc(sd, lb_nobusyq[idle]);
goto out_balanced;
@@ -2549,8 +2572,12 @@ static int load_balance(int this_cpu, st
double_rq_unlock(this_rq, busiest);

/* All tasks on this runqueue were pinned by CPU affinity */
- if (unlikely(all_pinned))
+ if (unlikely(all_pinned)) {
+ cpu_clear(cpu_of(busiest), cpus);
+ if (!cpus_empty(cpus))
+ goto redo;
goto out_balanced;
+ }
}

if (!nr_moved) {
@@ -2639,18 +2666,22 @@ load_balance_newidle(int this_cpu, struc
unsigned long imbalance;
int nr_moved = 0;
int sd_idle = 0;
+ cpumask_t cpus = CPU_MASK_ALL;

if (sd->flags & SD_SHARE_CPUPOWER && !sched_smt_power_savings)
sd_idle = 1;

schedstat_inc(sd, lb_cnt[NEWLY_IDLE]);
- group = find_busiest_group(sd, this_cpu, &imbalance, NEWLY_IDLE, &sd_idle);
+redo:
+ group = find_busiest_group(sd, this_cpu, &imbalance, NEWLY_IDLE,
+ &sd_idle, &cpus);
if (!group) {
schedstat_inc(sd, lb_nobusyg[NEWLY_IDLE]);
goto out_balanced;
}

- busiest = find_busiest_queue(group, NEWLY_IDLE, imbalance);
+ busiest = find_busiest_queue(group, NEWLY_IDLE, imbalance,
+ &cpus);
if (!busiest) {
schedstat_inc(sd, lb_nobusyq[NEWLY_IDLE]);
goto out_balanced;
@@ -2668,6 +2699,12 @@ load_balance_newidle(int this_cpu, struc
minus_1_or_zero(busiest->nr_running),
imbalance, sd, NEWLY_IDLE, NULL);
spin_unlock(&busiest->lock);
+
+ if (!nr_moved) {
+ cpu_clear(cpu_of(busiest), cpus);
+ if (!cpus_empty(cpus))
+ goto redo;
+ }
}

if (!nr_moved) {
@@ -6747,6 +6784,7 @@ void __init sched_init(void)
rq->cpu_load[j] = 0;
rq->active_balance = 0;
rq->push_cpu = 0;
+ rq->cpu = i;
rq->migration_thread = NULL;
INIT_LIST_HEAD(&rq->migration_queue);
#endif

--

2006-10-11 21:28:47

by Greg KH

[permalink] [raw]
Subject: [patch 03/67] uml: use DEFCONFIG_LIST to avoid reading hosts config


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

------------------
From: Paolo 'Blaisorblade' Giarrusso <[email protected]>

This should make sure that, for UML, host's configuration files are not
considered, which avoids various pains to the user. Our dependency are such that
the obtained Kconfig will be valid and will lead to successful compilation -
however they cannot prevent an user from disabling any boot device, and if an
option is not set in the read .config (say /boot/config-XXX), with make
menuconfig ARCH=um, it is not set. This always disables UBD and all console I/O
channels, which leads to non-working UML kernels, so this bothers users -
especially now, since it will happen on almost every machine
(/boot/config-`uname -r` exists almost on every machine). It can be workarounded
with make defconfig ARCH=um, but it is non-obvious and can be avoided, so please
_do_ merge this patch.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[email protected]>
Acked-by: Jeff Dike <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
arch/um/Kconfig | 5 +++++
init/Kconfig | 1 +
2 files changed, 6 insertions(+)

--- linux-2.6.18.orig/arch/um/Kconfig
+++ linux-2.6.18/arch/um/Kconfig
@@ -1,3 +1,8 @@
+config DEFCONFIG_LIST
+ string
+ option defconfig_list
+ default "arch/$ARCH/defconfig"
+
# UML uses the generic IRQ sugsystem
config GENERIC_HARDIRQS
bool
--- linux-2.6.18.orig/init/Kconfig
+++ linux-2.6.18/init/Kconfig
@@ -1,5 +1,6 @@
config DEFCONFIG_LIST
string
+ depends on !UML
option defconfig_list
default "/lib/modules/$UNAME_RELEASE/.config"
default "/etc/kernel-config"

--

2006-10-11 21:33:00

by Greg KH

[permalink] [raw]
Subject: [patch 18/67] zone_reclaim: dynamic slab reclaim


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

------------------
From: Christoph Lameter <[email protected]>

http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=0ff38490c836dc379ff7ec45b10a15a662f4e5f6


Currently one can enable slab reclaim by setting an explicit option in
/proc/sys/vm/zone_reclaim_mode. Slab reclaim is then used as a final
option if the freeing of unmapped file backed pages is not enough to free
enough pages to allow a local allocation.

However, that means that the slab can grow excessively and that most memory
of a node may be used by slabs. We have had a case where a machine with
46GB of memory was using 40-42GB for slab. Zone reclaim was effective in
dealing with pagecache pages. However, slab reclaim was only done during
global reclaim (which is a bit rare on NUMA systems).

This patch implements slab reclaim during zone reclaim. Zone reclaim
occurs if there is a danger of an off node allocation. At that point we

1. Shrink the per node page cache if the number of pagecache
pages is more than min_unmapped_ratio percent of pages in a zone.

2. Shrink the slab cache if the number of the nodes reclaimable slab pages
(patch depends on earlier one that implements that counter)
are more than min_slab_ratio (a new /proc/sys/vm tunable).

The shrinking of the slab cache is a bit problematic since it is not node
specific. So we simply calculate what point in the slab we want to reach
(current per node slab use minus the number of pages that neeed to be
allocated) and then repeately run the global reclaim until that is
unsuccessful or we have reached the limit. I hope we will have zone based
slab reclaim at some point which will make that easier.

The default for the min_slab_ratio is 5%

Also remove the slab option from /proc/sys/vm/zone_reclaim_mode.

[[email protected]: cleanups]
Signed-off-by: Christoph Lameter <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
Documentation/sysctl/vm.txt | 27 +++++++++++++++-----
include/linux/mmzone.h | 3 ++
include/linux/swap.h | 1
include/linux/sysctl.h | 1
kernel/sysctl.c | 11 ++++++++
mm/page_alloc.c | 17 ++++++++++++
mm/vmscan.c | 58 ++++++++++++++++++++++++++++----------------
7 files changed, 90 insertions(+), 28 deletions(-)

--- linux-2.6.18.orig/Documentation/sysctl/vm.txt
+++ linux-2.6.18/Documentation/sysctl/vm.txt
@@ -29,6 +29,7 @@ Currently, these files are in /proc/sys/
- drop-caches
- zone_reclaim_mode
- min_unmapped_ratio
+- min_slab_ratio
- panic_on_oom

==============================================================
@@ -138,7 +139,6 @@ This is value ORed together of
1 = Zone reclaim on
2 = Zone reclaim writes dirty pages out
4 = Zone reclaim swaps pages
-8 = Also do a global slab reclaim pass

zone_reclaim_mode is set during bootup to 1 if it is determined that pages
from remote zones will cause a measurable performance reduction. The
@@ -162,18 +162,13 @@ Allowing regular swap effectively restri
node unless explicitly overridden by memory policies or cpuset
configurations.

-It may be advisable to allow slab reclaim if the system makes heavy
-use of files and builds up large slab caches. However, the slab
-shrink operation is global, may take a long time and free slabs
-in all nodes of the system.
-
=============================================================

min_unmapped_ratio:

This is available only on NUMA kernels.

-A percentage of the file backed pages in each zone. Zone reclaim will only
+A percentage of the total pages in each zone. Zone reclaim will only
occur if more than this percentage of pages are file backed and unmapped.
This is to insure that a minimal amount of local pages is still available for
file I/O even if the node is overallocated.
@@ -182,6 +177,24 @@ The default is 1 percent.

=============================================================

+min_slab_ratio:
+
+This is available only on NUMA kernels.
+
+A percentage of the total pages in each zone. On Zone reclaim
+(fallback from the local zone occurs) slabs will be reclaimed if more
+than this percentage of pages in a zone are reclaimable slab pages.
+This insures that the slab growth stays under control even in NUMA
+systems that rarely perform global reclaim.
+
+The default is 5 percent.
+
+Note that slab reclaim is triggered in a per zone / node fashion.
+The process of reclaiming slab memory is currently not node specific
+and may not be fast.
+
+=============================================================
+
panic_on_oom

This enables or disables panic on out-of-memory feature. If this is set to 1,
--- linux-2.6.18.orig/include/linux/mmzone.h
+++ linux-2.6.18/include/linux/mmzone.h
@@ -155,6 +155,7 @@ struct zone {
* zone reclaim becomes active if more unmapped pages exist.
*/
unsigned long min_unmapped_ratio;
+ unsigned long min_slab_pages;
struct per_cpu_pageset *pageset[NR_CPUS];
#else
struct per_cpu_pageset pageset[NR_CPUS];
@@ -421,6 +422,8 @@ int percpu_pagelist_fraction_sysctl_hand
void __user *, size_t *, loff_t *);
int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *, int,
struct file *, void __user *, size_t *, loff_t *);
+int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int,
+ struct file *, void __user *, size_t *, loff_t *);

#include <linux/topology.h>
/* Returns the number of the current Node. */
--- linux-2.6.18.orig/include/linux/swap.h
+++ linux-2.6.18/include/linux/swap.h
@@ -190,6 +190,7 @@ extern long vm_total_pages;
#ifdef CONFIG_NUMA
extern int zone_reclaim_mode;
extern int sysctl_min_unmapped_ratio;
+extern int sysctl_min_slab_ratio;
extern int zone_reclaim(struct zone *, gfp_t, unsigned int);
#else
#define zone_reclaim_mode 0
--- linux-2.6.18.orig/include/linux/sysctl.h
+++ linux-2.6.18/include/linux/sysctl.h
@@ -191,6 +191,7 @@ enum
VM_MIN_UNMAPPED=32, /* Set min percent of unmapped pages */
VM_PANIC_ON_OOM=33, /* panic at out-of-memory */
VM_VDSO_ENABLED=34, /* map VDSO into new processes? */
+ VM_MIN_SLAB=35, /* Percent pages ignored by zone reclaim */
};


--- linux-2.6.18.orig/kernel/sysctl.c
+++ linux-2.6.18/kernel/sysctl.c
@@ -943,6 +943,17 @@ static ctl_table vm_table[] = {
.extra1 = &zero,
.extra2 = &one_hundred,
},
+ {
+ .ctl_name = VM_MIN_SLAB,
+ .procname = "min_slab_ratio",
+ .data = &sysctl_min_slab_ratio,
+ .maxlen = sizeof(sysctl_min_slab_ratio),
+ .mode = 0644,
+ .proc_handler = &sysctl_min_slab_ratio_sysctl_handler,
+ .strategy = &sysctl_intvec,
+ .extra1 = &zero,
+ .extra2 = &one_hundred,
+ },
#endif
#ifdef CONFIG_X86_32
{
--- linux-2.6.18.orig/mm/page_alloc.c
+++ linux-2.6.18/mm/page_alloc.c
@@ -2008,6 +2008,7 @@ static void __meminit free_area_init_cor
#ifdef CONFIG_NUMA
zone->min_unmapped_ratio = (realsize*sysctl_min_unmapped_ratio)
/ 100;
+ zone->min_slab_pages = (realsize * sysctl_min_slab_ratio) / 100;
#endif
zone->name = zone_names[j];
spin_lock_init(&zone->lock);
@@ -2318,6 +2319,22 @@ int sysctl_min_unmapped_ratio_sysctl_han
sysctl_min_unmapped_ratio) / 100;
return 0;
}
+
+int sysctl_min_slab_ratio_sysctl_handler(ctl_table *table, int write,
+ struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
+{
+ struct zone *zone;
+ int rc;
+
+ rc = proc_dointvec_minmax(table, write, file, buffer, length, ppos);
+ if (rc)
+ return rc;
+
+ for_each_zone(zone)
+ zone->min_slab_pages = (zone->present_pages *
+ sysctl_min_slab_ratio) / 100;
+ return 0;
+}
#endif

/*
--- linux-2.6.18.orig/mm/vmscan.c
+++ linux-2.6.18/mm/vmscan.c
@@ -1510,7 +1510,6 @@ int zone_reclaim_mode __read_mostly;
#define RECLAIM_ZONE (1<<0) /* Run shrink_cache on the zone */
#define RECLAIM_WRITE (1<<1) /* Writeout pages during reclaim */
#define RECLAIM_SWAP (1<<2) /* Swap pages out during reclaim */
-#define RECLAIM_SLAB (1<<3) /* Do a global slab shrink if the zone is out of memory */

/*
* Priority for ZONE_RECLAIM. This determines the fraction of pages
@@ -1526,6 +1525,12 @@ int zone_reclaim_mode __read_mostly;
int sysctl_min_unmapped_ratio = 1;

/*
+ * If the number of slab pages in a zone grows beyond this percentage then
+ * slab reclaim needs to occur.
+ */
+int sysctl_min_slab_ratio = 5;
+
+/*
* Try to free up some pages from this zone through reclaim.
*/
static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
@@ -1556,29 +1561,37 @@ static int __zone_reclaim(struct zone *z
reclaim_state.reclaimed_slab = 0;
p->reclaim_state = &reclaim_state;

- /*
- * Free memory by calling shrink zone with increasing priorities
- * until we have enough memory freed.
- */
- priority = ZONE_RECLAIM_PRIORITY;
- do {
- nr_reclaimed += shrink_zone(priority, zone, &sc);
- priority--;
- } while (priority >= 0 && nr_reclaimed < nr_pages);
+ if (zone_page_state(zone, NR_FILE_PAGES) -
+ zone_page_state(zone, NR_FILE_MAPPED) >
+ zone->min_unmapped_ratio) {
+ /*
+ * Free memory by calling shrink zone with increasing
+ * priorities until we have enough memory freed.
+ */
+ priority = ZONE_RECLAIM_PRIORITY;
+ do {
+ nr_reclaimed += shrink_zone(priority, zone, &sc);
+ priority--;
+ } while (priority >= 0 && nr_reclaimed < nr_pages);
+ }

- if (nr_reclaimed < nr_pages && (zone_reclaim_mode & RECLAIM_SLAB)) {
+ if (zone_page_state(zone, NR_SLAB) > zone->min_slab_pages) {
/*
* shrink_slab() does not currently allow us to determine how
- * many pages were freed in this zone. So we just shake the slab
- * a bit and then go off node for this particular allocation
- * despite possibly having freed enough memory to allocate in
- * this zone. If we freed local memory then the next
- * allocations will be local again.
+ * many pages were freed in this zone. So we take the current
+ * number of slab pages and shake the slab until it is reduced
+ * by the same nr_pages that we used for reclaiming unmapped
+ * pages.
*
- * shrink_slab will free memory on all zones and may take
- * a long time.
+ * Note that shrink_slab will free memory on all zones and may
+ * take a long time.
*/
- shrink_slab(sc.nr_scanned, gfp_mask, order);
+ unsigned long limit = zone_page_state(zone,
+ NR_SLAB) - nr_pages;
+
+ while (shrink_slab(sc.nr_scanned, gfp_mask, order) &&
+ zone_page_state(zone, NR_SLAB) > limit)
+ ;
}

p->reclaim_state = NULL;
@@ -1592,7 +1605,8 @@ int zone_reclaim(struct zone *zone, gfp_
int node_id;

/*
- * Zone reclaim reclaims unmapped file backed pages.
+ * Zone reclaim reclaims unmapped file backed pages and
+ * slab pages if we are over the defined limits.
*
* A small portion of unmapped file backed pages is needed for
* file I/O otherwise pages read by file I/O will be immediately
@@ -1601,7 +1615,9 @@ int zone_reclaim(struct zone *zone, gfp_
* unmapped file backed pages.
*/
if (zone_page_state(zone, NR_FILE_PAGES) -
- zone_page_state(zone, NR_FILE_MAPPED) <= zone->min_unmapped_ratio)
+ zone_page_state(zone, NR_FILE_MAPPED) <= zone->min_unmapped_ratio
+ && zone_page_state(zone, NR_SLAB)
+ <= zone->min_slab_pages)
return 0;

/*

--

2006-10-11 21:31:26

by Greg KH

[permalink] [raw]
Subject: Re: [patch 06/67] Video: cx24123: fix PLL divisor setup

On Wed, Oct 11, 2006 at 05:15:35PM -0400, Michael Krufky wrote:
> Greg KH wrote:
> > -stable review patch. If anyone has any objections, please let us know.
> >
> > ------------------
> > From: Yeasah Pell <[email protected]>
> >
> > The cx24109 datasheet says: "NOTE: if A=0, then N=N+1"
> >
> > The current code is the result of a misinterpretation of the datasheet to
> > mean exactly the opposite of the requirement -- The actual value of N is 1
> > greater than the value written when A is 0, so 1 needs to be *subtracted*
> > from it to compensate.
> >
> > Signed-off-by: Yeasah Pell <[email protected]>
> > Signed-off-by: Steven Toth <[email protected]>
> > Signed-off-by: Michael Krufky <[email protected]>
> > Signed-off-by: Greg Kroah-Hartman <[email protected]>
>
> Greg,
>
> When you apply this patch to your 2.6.18.y tree (and also to your
> 2.6.17.y tree) , can you please preceed the patch title with 'DVB'
> instead of 'VIDEO' ?
>
> I'll be sure to specify the subsystem, instead of only the driver name
> in future patches.

Yes, it's better for you to specifiy it, instead of having me guess at
what it should be classified as :)

I'll try to go edit the existing patches to fix this,

thanks,

greg k-h

2006-10-11 21:31:23

by Greg KH

[permalink] [raw]
Subject: [patch 19/67] mv643xx_eth: fix obvious typo, which caused build breakage


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

------------------
From: Jeff Garzik <[email protected]>

The last minute fix submitted by the author fixed a bug, but
broke the driver build.

Noticed by Al Viro, since I can't build on said platform.

Signed-off-by: Jeff Garzik <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
drivers/net/mv643xx_eth.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/drivers/net/mv643xx_eth.c
+++ linux-2.6.18/drivers/net/mv643xx_eth.c
@@ -385,7 +385,7 @@ static int mv643xx_eth_receive_queue(str
struct pkt_info pkt_info;

while (budget-- > 0 && eth_port_receive(mp, &pkt_info) == ETH_OK) {
- dma_unmap_single(NULL, pkt_info.buf_ptr, RX_SKB_SIZE,
+ dma_unmap_single(NULL, pkt_info.buf_ptr, ETH_RX_SKB_SIZE,
DMA_FROM_DEVICE);
mp->rx_desc_count--;
received_packets++;

--

2006-10-11 21:33:37

by Greg KH

[permalink] [raw]
Subject: [patch 06/67] Video: cx24123: fix PLL divisor setup


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

------------------
From: Yeasah Pell <[email protected]>

The cx24109 datasheet says: "NOTE: if A=0, then N=N+1"

The current code is the result of a misinterpretation of the datasheet to
mean exactly the opposite of the requirement -- The actual value of N is 1
greater than the value written when A is 0, so 1 needs to be *subtracted*
from it to compensate.

Signed-off-by: Yeasah Pell <[email protected]>
Signed-off-by: Steven Toth <[email protected]>
Signed-off-by: Michael Krufky <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/media/dvb/frontends/cx24123.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/drivers/media/dvb/frontends/cx24123.c
+++ linux-2.6.18/drivers/media/dvb/frontends/cx24123.c
@@ -549,8 +549,8 @@ static int cx24123_pll_calculate(struct
ndiv = ( ((p->frequency * vco_div * 10) / (2 * XTAL / 1000)) / 32) & 0x1ff;
adiv = ( ((p->frequency * vco_div * 10) / (2 * XTAL / 1000)) % 32) & 0x1f;

- if (adiv == 0)
- ndiv++;
+ if (adiv == 0 && ndiv > 0)
+ ndiv--;

/* control bits 11, refdiv 11, charge pump polarity 1, charge pump current, ndiv, adiv */
state->pllarg = (3 << 19) | (3 << 17) | (1 << 16) | (pump << 14) | (ndiv << 5) | adiv;

--

2006-10-11 21:31:24

by Greg KH

[permalink] [raw]
Subject: [patch 16/67] jbd: fix commit of ordered data buffers


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

------------------
From: Jan Kara <[email protected]>

Original commit code assumes, that when a buffer on BJ_SyncData list is
locked, it is being written to disk. But this is not true and hence it can
lead to a potential data loss on crash. Also the code didn't count with
the fact that journal_dirty_data() can steal buffers from committing
transaction and hence could write buffers that no longer belong to the
committing transaction. Finally it could possibly happen that we tried
writing out one buffer several times.

The patch below tries to solve these problems by a complete rewrite of the
data commit code. We go through buffers on t_sync_datalist, lock buffers
needing write out and store them in an array. Buffers are also immediately
refiled to BJ_Locked list or unfiled (if the write out is completed). When
the array is full or we have to block on buffer lock, we submit all
accumulated buffers for IO.

[suitable for 2.6.18.x around the 2.6.19-rc2 timeframe]

Signed-off-by: Jan Kara <[email protected]>
Cc: Badari Pulavarty <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
fs/jbd/commit.c | 182 ++++++++++++++++++++++++++++++++++----------------------
1 file changed, 113 insertions(+), 69 deletions(-)

--- linux-2.6.18.orig/fs/jbd/commit.c
+++ linux-2.6.18/fs/jbd/commit.c
@@ -160,6 +160,117 @@ static int journal_write_commit_record(j
return (ret == -EIO);
}

+void journal_do_submit_data(struct buffer_head **wbuf, int bufs)
+{
+ int i;
+
+ for (i = 0; i < bufs; i++) {
+ wbuf[i]->b_end_io = end_buffer_write_sync;
+ /* We use-up our safety reference in submit_bh() */
+ submit_bh(WRITE, wbuf[i]);
+ }
+}
+
+/*
+ * Submit all the data buffers to disk
+ */
+static void journal_submit_data_buffers(journal_t *journal,
+ transaction_t *commit_transaction)
+{
+ struct journal_head *jh;
+ struct buffer_head *bh;
+ int locked;
+ int bufs = 0;
+ struct buffer_head **wbuf = journal->j_wbuf;
+
+ /*
+ * Whenever we unlock the journal and sleep, things can get added
+ * onto ->t_sync_datalist, so we have to keep looping back to
+ * write_out_data until we *know* that the list is empty.
+ *
+ * Cleanup any flushed data buffers from the data list. Even in
+ * abort mode, we want to flush this out as soon as possible.
+ */
+write_out_data:
+ cond_resched();
+ spin_lock(&journal->j_list_lock);
+
+ while (commit_transaction->t_sync_datalist) {
+ jh = commit_transaction->t_sync_datalist;
+ bh = jh2bh(jh);
+ locked = 0;
+
+ /* Get reference just to make sure buffer does not disappear
+ * when we are forced to drop various locks */
+ get_bh(bh);
+ /* If the buffer is dirty, we need to submit IO and hence
+ * we need the buffer lock. We try to lock the buffer without
+ * blocking. If we fail, we need to drop j_list_lock and do
+ * blocking lock_buffer().
+ */
+ if (buffer_dirty(bh)) {
+ if (test_set_buffer_locked(bh)) {
+ BUFFER_TRACE(bh, "needs blocking lock");
+ spin_unlock(&journal->j_list_lock);
+ /* Write out all data to prevent deadlocks */
+ journal_do_submit_data(wbuf, bufs);
+ bufs = 0;
+ lock_buffer(bh);
+ spin_lock(&journal->j_list_lock);
+ }
+ locked = 1;
+ }
+ /* We have to get bh_state lock. Again out of order, sigh. */
+ if (!inverted_lock(journal, bh)) {
+ jbd_lock_bh_state(bh);
+ spin_lock(&journal->j_list_lock);
+ }
+ /* Someone already cleaned up the buffer? */
+ if (!buffer_jbd(bh)
+ || jh->b_transaction != commit_transaction
+ || jh->b_jlist != BJ_SyncData) {
+ jbd_unlock_bh_state(bh);
+ if (locked)
+ unlock_buffer(bh);
+ BUFFER_TRACE(bh, "already cleaned up");
+ put_bh(bh);
+ continue;
+ }
+ if (locked && test_clear_buffer_dirty(bh)) {
+ BUFFER_TRACE(bh, "needs writeout, adding to array");
+ wbuf[bufs++] = bh;
+ __journal_file_buffer(jh, commit_transaction,
+ BJ_Locked);
+ jbd_unlock_bh_state(bh);
+ if (bufs == journal->j_wbufsize) {
+ spin_unlock(&journal->j_list_lock);
+ journal_do_submit_data(wbuf, bufs);
+ bufs = 0;
+ goto write_out_data;
+ }
+ }
+ else {
+ BUFFER_TRACE(bh, "writeout complete: unfile");
+ __journal_unfile_buffer(jh);
+ jbd_unlock_bh_state(bh);
+ if (locked)
+ unlock_buffer(bh);
+ journal_remove_journal_head(bh);
+ /* Once for our safety reference, once for
+ * journal_remove_journal_head() */
+ put_bh(bh);
+ put_bh(bh);
+ }
+
+ if (lock_need_resched(&journal->j_list_lock)) {
+ spin_unlock(&journal->j_list_lock);
+ goto write_out_data;
+ }
+ }
+ spin_unlock(&journal->j_list_lock);
+ journal_do_submit_data(wbuf, bufs);
+}
+
/*
* journal_commit_transaction
*
@@ -313,80 +424,13 @@ void journal_commit_transaction(journal_
* Now start flushing things to disk, in the order they appear
* on the transaction lists. Data blocks go first.
*/
-
err = 0;
- /*
- * Whenever we unlock the journal and sleep, things can get added
- * onto ->t_sync_datalist, so we have to keep looping back to
- * write_out_data until we *know* that the list is empty.
- */
- bufs = 0;
- /*
- * Cleanup any flushed data buffers from the data list. Even in
- * abort mode, we want to flush this out as soon as possible.
- */
-write_out_data:
- cond_resched();
- spin_lock(&journal->j_list_lock);
-
- while (commit_transaction->t_sync_datalist) {
- struct buffer_head *bh;
-
- jh = commit_transaction->t_sync_datalist;
- commit_transaction->t_sync_datalist = jh->b_tnext;
- bh = jh2bh(jh);
- if (buffer_locked(bh)) {
- BUFFER_TRACE(bh, "locked");
- if (!inverted_lock(journal, bh))
- goto write_out_data;
- __journal_temp_unlink_buffer(jh);
- __journal_file_buffer(jh, commit_transaction,
- BJ_Locked);
- jbd_unlock_bh_state(bh);
- if (lock_need_resched(&journal->j_list_lock)) {
- spin_unlock(&journal->j_list_lock);
- goto write_out_data;
- }
- } else {
- if (buffer_dirty(bh)) {
- BUFFER_TRACE(bh, "start journal writeout");
- get_bh(bh);
- wbuf[bufs++] = bh;
- if (bufs == journal->j_wbufsize) {
- jbd_debug(2, "submit %d writes\n",
- bufs);
- spin_unlock(&journal->j_list_lock);
- ll_rw_block(SWRITE, bufs, wbuf);
- journal_brelse_array(wbuf, bufs);
- bufs = 0;
- goto write_out_data;
- }
- } else {
- BUFFER_TRACE(bh, "writeout complete: unfile");
- if (!inverted_lock(journal, bh))
- goto write_out_data;
- __journal_unfile_buffer(jh);
- jbd_unlock_bh_state(bh);
- journal_remove_journal_head(bh);
- put_bh(bh);
- if (lock_need_resched(&journal->j_list_lock)) {
- spin_unlock(&journal->j_list_lock);
- goto write_out_data;
- }
- }
- }
- }
-
- if (bufs) {
- spin_unlock(&journal->j_list_lock);
- ll_rw_block(SWRITE, bufs, wbuf);
- journal_brelse_array(wbuf, bufs);
- spin_lock(&journal->j_list_lock);
- }
+ journal_submit_data_buffers(journal, commit_transaction);

/*
* Wait for all previously submitted IO to complete.
*/
+ spin_lock(&journal->j_list_lock);
while (commit_transaction->t_locked_list) {
struct buffer_head *bh;


--

2006-10-11 21:29:48

by Greg KH

[permalink] [raw]
Subject: [patch 07/67] Video: pvrusb2: Solve mutex deadlock


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

------------------
From: Mike Isely <[email protected]>

There is a mutex ordering problem between the pvrusb2 driver and the
v4l core. Two different pathways take mutexes in opposing orders and
this (under rare circumstances) can cause a deadlock. The two mutexes
in question are videodev_lock in the v4l core and device_lock inside
the pvrusb2 driver. The device_lock instance in the driver protects a
private global array of context pointers which had been implemented in
advance of v4l core changes which eliminate the video_set_drvdata()
and video_get_drvdata() functions.

This patch restores the use of video_get_drvdata() and
video_set_drvdata(), eliminating the need for the array and the mutex.
(This is actually a patch to restore the previous implementation.) We
can do this for 2.6.18 since those functions are in fact still
present. A better (and larger) solution will be done for later
kernels.

Signed-off-by: Mike Isely <[email protected]>
Signed-off-by: Michael Krufky <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -22,6 +22,7 @@

#include <linux/kernel.h>
#include <linux/version.h>
+#include <linux/videodev.h>
#include "pvrusb2-context.h"
#include "pvrusb2-hdw.h"
#include "pvrusb2.h"
@@ -35,21 +36,11 @@ struct pvr2_v4l2_dev;
struct pvr2_v4l2_fh;
struct pvr2_v4l2;

-/* V4L no longer provide the ability to set / get a private context pointer
- (i.e. video_get_drvdata / video_set_drvdata), which means we have to
- concoct our own context locating mechanism. Supposedly this is intended
- to simplify driver implementation. It's not clear to me how that can
- possibly be true. Our solution here is to maintain a lookup table of
- our context instances, indexed by the minor device number of the V4L
- device. See pvr2_v4l2_open() for some implications of this approach. */
-static struct pvr2_v4l2_dev *devices[256];
-static DEFINE_MUTEX(device_lock);

struct pvr2_v4l2_dev {
struct pvr2_v4l2 *v4lp;
struct video_device *vdev;
struct pvr2_context_stream *stream;
- int ctxt_idx;
enum pvr2_config config;
};

@@ -703,12 +694,6 @@ static void pvr2_v4l2_dev_destroy(struct
{
printk(KERN_INFO "pvrusb2: unregistering device video%d [%s]\n",
dip->vdev->minor,pvr2_config_get_name(dip->config));
- if (dip->ctxt_idx >= 0) {
- mutex_lock(&device_lock);
- devices[dip->ctxt_idx] = NULL;
- dip->ctxt_idx = -1;
- mutex_unlock(&device_lock);
- }
video_unregister_device(dip->vdev);
}

@@ -800,33 +785,10 @@ static int pvr2_v4l2_open(struct inode *
struct pvr2_v4l2 *vp;
struct pvr2_hdw *hdw;

- mutex_lock(&device_lock);
- /* MCI 7-Jun-2006 Even though we're just doing what amounts to an
- atomic read of the device mapping array here, we still need the
- mutex. The problem is that there is a tiny race possible when
- we register the device. We can't update the device mapping
- array until after the device has been registered, owing to the
- fact that we can't know the minor device number until after the
- registration succeeds. And if another thread tries to open the
- device in the window of time after registration but before the
- map is updated, then it will get back an erroneous null pointer
- and the open will result in a spurious failure. The only way to
- prevent that is to (a) be inside the mutex here before we access
- the array, and (b) cover the entire registration process later
- on with this same mutex. Thus if we get inside the mutex here,
- then we can be assured that the registration process actually
- completed correctly. This is an unhappy complication from the
- use of global data in a driver that lives in a preemptible
- environment. It sure would be nice if the video device itself
- had a means for storing and retrieving a local context pointer.
- Oh wait. It did. But now it's gone. Silly me. */
{
- unsigned int midx = iminor(file->f_dentry->d_inode);
- if (midx < sizeof(devices)/sizeof(devices[0])) {
- dip = devices[midx];
- }
+ struct video_device *vdev = video_devdata(file);
+ dip = (struct pvr2_v4l2_dev *)video_get_drvdata(vdev);
}
- mutex_unlock(&device_lock);

if (!dip) return -ENODEV; /* Should be impossible but I'm paranoid */

@@ -1066,7 +1028,7 @@ static void pvr2_v4l2_dev_init(struct pv

memcpy(dip->vdev,&vdev_template,sizeof(vdev_template));
dip->vdev->release = video_device_release;
- mutex_lock(&device_lock);
+ video_set_drvdata(dip->vdev,dip);

mindevnum = -1;
unit_number = pvr2_hdw_get_unit_number(vp->channel.mc_head->hdw);
@@ -1081,12 +1043,6 @@ static void pvr2_v4l2_dev_init(struct pv
dip->vdev->minor,pvr2_config_get_name(dip->config));
}

- if ((dip->vdev->minor < sizeof(devices)/sizeof(devices[0])) &&
- (devices[dip->vdev->minor] == NULL)) {
- dip->ctxt_idx = dip->vdev->minor;
- devices[dip->ctxt_idx] = dip;
- }
- mutex_unlock(&device_lock);

pvr2_hdw_v4l_store_minor_number(vp->channel.mc_head->hdw,
dip->vdev->minor);
@@ -1100,7 +1056,6 @@ struct pvr2_v4l2 *pvr2_v4l2_create(struc
vp = kmalloc(sizeof(*vp),GFP_KERNEL);
if (!vp) return vp;
memset(vp,0,sizeof(*vp));
- vp->video_dev.ctxt_idx = -1;
pvr2_channel_init(&vp->channel,mnp);
pvr2_trace(PVR2_TRACE_STRUCT,"Creating pvr2_v4l2 id=%p",vp);


_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable

--

2006-10-11 21:29:51

by Greg KH

[permalink] [raw]
Subject: [patch 13/67] IB/mthca: Fix lid used for sending traps


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

------------------
From: Jack Morgenstein <[email protected]>

The SM LID used to send traps to is incorrectly set to port LID. This
is a regression from 2.6.17 -- after a PortInfo MAD is received, no
traps are sent to the SM LID. The traps go to the loopback interface
instead, and are dropped there. The SM LID should be taken from the
sm_lid of the PortInfo response.

The bug was introduced by commit 12bbb2b7be7f5564952ebe0196623e97464b8ac5:
IB/mthca: Add client reregister event generation

Signed-off-by: Jack Morgenstein <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Roland Dreier <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/infiniband/hw/mthca/mthca_mad.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.18.orig/drivers/infiniband/hw/mthca/mthca_mad.c
+++ linux-2.6.18/drivers/infiniband/hw/mthca/mthca_mad.c
@@ -119,7 +119,7 @@ static void smp_snoop(struct ib_device *

mthca_update_rate(to_mdev(ibdev), port_num);
update_sm_ah(to_mdev(ibdev), port_num,
- be16_to_cpu(pinfo->lid),
+ be16_to_cpu(pinfo->sm_lid),
pinfo->neighbormtu_mastersmsl & 0xf);

event.device = ibdev;

--

2006-10-11 21:29:50

by Greg KH

[permalink] [raw]
Subject: [patch 05/67] Video: Fix msp343xG handling regression


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

------------------
From: Hans Verkuil <[email protected]>

The msp3430G and msp3435G models cannot do Automatic Standard Detection,
so these should be forced to BTSC. These chips are early production
versions for the msp34xxG series and are quite rare.

The workaround for kernel 2.6.18 is to use 'standard=32' as msp3400 module
option.

Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Michael Krufky <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/media/video/msp3400-driver.c | 2 ++
drivers/media/video/msp3400-driver.h | 1 +
drivers/media/video/msp3400-kthreads.c | 5 +++--
3 files changed, 6 insertions(+), 2 deletions(-)

--- linux-2.6.18.orig/drivers/media/video/msp3400-driver.c
+++ linux-2.6.18/drivers/media/video/msp3400-driver.c
@@ -904,6 +904,8 @@ static int msp_attach(struct i2c_adapter
state->has_virtual_dolby_surround = msp_revision == 'G' && msp_prod_lo == 1;
/* Has Virtual Dolby Surround & Dolby Pro Logic: only in msp34x2 */
state->has_dolby_pro_logic = msp_revision == 'G' && msp_prod_lo == 2;
+ /* The msp343xG supports BTSC only and cannot do Automatic Standard Detection. */
+ state->force_btsc = msp_family == 3 && msp_revision == 'G' && msp_prod_hi == 3;

state->opmode = opmode;
if (state->opmode == OPMODE_AUTO) {
--- linux-2.6.18.orig/drivers/media/video/msp3400-driver.h
+++ linux-2.6.18/drivers/media/video/msp3400-driver.h
@@ -64,6 +64,7 @@ struct msp_state {
u8 has_sound_processing;
u8 has_virtual_dolby_surround;
u8 has_dolby_pro_logic;
+ u8 force_btsc;

int radio;
int opmode;
--- linux-2.6.18.orig/drivers/media/video/msp3400-kthreads.c
+++ linux-2.6.18/drivers/media/video/msp3400-kthreads.c
@@ -960,9 +960,10 @@ int msp34xxg_thread(void *data)

/* setup the chip*/
msp34xxg_reset(client);
- state->std = state->radio ? 0x40 : msp_standard;
- /* start autodetect */
+ state->std = state->radio ? 0x40 :
+ (state->force_btsc && msp_standard == 1) ? 32 : msp_standard;
msp_write_dem(client, 0x20, state->std);
+ /* start autodetect */
if (state->std != 1)
goto unmute;


--

2006-10-11 21:33:37

by Greg KH

[permalink] [raw]
Subject: [patch 04/67] UML: Fix UML build failure


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

------------------
From: Jeff Dike <[email protected]>

don't know if the following is already queued, it fixes an ARCH=um build
failure, evidence here:
http://marc.theaimsgroup.com/?l=linux-kernel&m=115875912525137&w=2
and following thread.
Cc-ing uml maintainers and I hope I didn't follow too many
Submitting-patches rules...

The patch is taken from:
http://user-mode-linux.sourceforge.net/work/current/2.6/2.6.18/patches/no-syscallx

Since the syscallx macros seem to be under threat, this patch stops
using them, using syscall instead.

Acked-by: Jeff Dike <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
arch/um/os-Linux/process.c | 4 +---
arch/um/os-Linux/sys-i386/tls.c | 4 +---
arch/um/os-Linux/tls.c | 7 ++-----
3 files changed, 4 insertions(+), 11 deletions(-)

--- linux-2.6.18.orig/arch/um/os-Linux/process.c
+++ linux-2.6.18/arch/um/os-Linux/process.c
@@ -141,11 +141,9 @@ void os_usr1_process(int pid)
* syscalls, and also breaks with clone(), which does not unshare the TLS.
*/

-inline _syscall0(pid_t, getpid)
-
int os_getpid(void)
{
- return(getpid());
+ return syscall(__NR_getpid);
}

int os_getpgrp(void)
--- linux-2.6.18.orig/arch/um/os-Linux/sys-i386/tls.c
+++ linux-2.6.18/arch/um/os-Linux/sys-i386/tls.c
@@ -3,8 +3,6 @@
#include "sysdep/tls.h"
#include "user_util.h"

-static _syscall1(int, get_thread_area, user_desc_t *, u_info);
-
/* Checks whether host supports TLS, and sets *tls_min according to the value
* valid on the host.
* i386 host have it == 6; x86_64 host have it == 12, for i386 emulation. */
@@ -17,7 +15,7 @@ void check_host_supports_tls(int *suppor
user_desc_t info;
info.entry_number = val[i];

- if (get_thread_area(&info) == 0) {
+ if(syscall(__NR_get_thread_area, &info) == 0){
*tls_min = val[i];
*supports_tls = 1;
return;
--- linux-2.6.18.orig/arch/um/os-Linux/tls.c
+++ linux-2.6.18/arch/um/os-Linux/tls.c
@@ -48,14 +48,11 @@ int os_get_thread_area(user_desc_t *info
#ifdef UML_CONFIG_MODE_TT
#include "linux/unistd.h"

-static _syscall1(int, get_thread_area, user_desc_t *, u_info);
-static _syscall1(int, set_thread_area, user_desc_t *, u_info);
-
int do_set_thread_area_tt(user_desc_t *info)
{
int ret;

- ret = set_thread_area(info);
+ ret = syscall(__NR_set_thread_area, info);
if (ret < 0) {
ret = -errno;
}
@@ -66,7 +63,7 @@ int do_get_thread_area_tt(user_desc_t *i
{
int ret;

- ret = get_thread_area(info);
+ ret = syscall(__NR_get_thread_area, info);
if (ret < 0) {
ret = -errno;
}

--

2006-10-11 21:37:40

by Michael Ira Krufky

[permalink] [raw]
Subject: Re: [patch 06/67] Video: cx24123: fix PLL divisor setup

Greg KH wrote:
> On Wed, Oct 11, 2006 at 05:15:35PM -0400, Michael Krufky wrote:
>> Greg KH wrote:
>>> -stable review patch. If anyone has any objections, please let us know.
>>>
>>> ------------------
>>> From: Yeasah Pell <[email protected]>
>>>
>>> The cx24109 datasheet says: "NOTE: if A=0, then N=N+1"
>>>
>>> The current code is the result of a misinterpretation of the datasheet to
>>> mean exactly the opposite of the requirement -- The actual value of N is 1
>>> greater than the value written when A is 0, so 1 needs to be *subtracted*
>>> from it to compensate.
>>>
>>> Signed-off-by: Yeasah Pell <[email protected]>
>>> Signed-off-by: Steven Toth <[email protected]>
>>> Signed-off-by: Michael Krufky <[email protected]>
>>> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>> Greg,
>>
>> When you apply this patch to your 2.6.18.y tree (and also to your
>> 2.6.17.y tree) , can you please preceed the patch title with 'DVB'
>> instead of 'VIDEO' ?
>>
>> I'll be sure to specify the subsystem, instead of only the driver name
>> in future patches.
>
> Yes, it's better for you to specifiy it, instead of having me guess at
> what it should be classified as :)
>
> I'll try to go edit the existing patches to fix this,

OOPS! I just saw your -stable commit.

Slight misunderstanding, Greg...

Out of those six patches that I sent to you, only "cx24123: fix PLL
divisor setup" is a DVB patch... The remaining 5 patches are V4L patches.

Sorry for the confusion.

Regards,

Michael Krufky

2006-10-11 21:37:58

by Dave Jones

[permalink] [raw]
Subject: Re: [patch 00/67] 2.6.18-stable review

On Wed, Oct 11, 2006 at 02:03:10PM -0700, Greg KH wrote:
> This is the start of the stable review cycle for the 2.6.18.1 release.
> There are 67 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 [email protected] to
> add your name to the list. If you want to be off the reviewer list,
> also email us.
>
> Responses should be made by Friday, October 13, 20:00:00 UTC. Anything
> received after that time might be too late.
>
> And yes, we realize that this is a large number of patches, sorry, we
> have been a bit slow in responding lately. If there are any patches
> that have been sent to us for the 2.6.18-stable tree, that are not in
> this series, please resend them, as we think we are finally caught up
> with this work.
>
> An all-in-one patch for this series can be found at:
> http://www.kernel.org/pub/linux/kernel/people/gregkh/stable/patch-2.6.18.1-rc1.gz
> if anyone wants to test this out that way.

Is it intentional that this adds a include/linux/utsrelease.h ?
I don't see any patch that adds it in the review mails, but its there in the gz.

Dave

--
http://www.codemonkey.org.uk

2006-10-11 21:46:17

by Jonathan Corbet

[permalink] [raw]
Subject: Re: [patch 48/67] Fix VIDIOC_ENUMSTD bug

> So any application which passes in index=0 gets EINVAL right off the bat
> - and, in fact, this is what happens to mplayer. So I think the
> following patch is called for, and maybe even appropriate for a 2.6.18.x
> stable release.

The fix is worth having, though I guess I'm no longer 100% sure it's
necessary for -stable, since I don't think anything in-tree other than
vivi uses this interface in 2.6.18. If you are going to include it,
though, it makes sense to put in Sascha's fix too - both are needed to
make the new v4l2 ioctl() interface operate as advertised.

jon


From: Sascha Hauer <[email protected]>
Subject: [PATCH] copy-paste bug in videodev.c
Date: Mon, 11 Sep 2006 10:50:55 +0200
To: [email protected]

This patch fixes a copy-paste bug in videodev.c where the vidioc_qbuf()
function gets called for the dqbuf ioctl.

Signed-off-by: Sascha Hauer <[email protected]>

diff --git a/drivers/media/video/videodev.c
b/drivers/media/video/videodev.c
index 88bf2af..8abee33 100644
--- a/drivers/media/video/videodev.c
+++ b/drivers/media/video/videodev.c
@@ -739,13 +739,13 @@ static int __video_do_ioctl(struct inode
case VIDIOC_DQBUF:
{
struct v4l2_buffer *p=arg;
- if (!vfd->vidioc_qbuf)
+ if (!vfd->vidioc_dqbuf)
break;
ret = check_fmt (vfd, p->type);
if (ret)
break;

- ret=vfd->vidioc_qbuf(file, fh, p);
+ ret=vfd->vidioc_dqbuf(file, fh, p);
if (!ret)
dbgbuf(cmd,vfd,p);
break;


--
Dipl.-Ing. Sascha Hauer | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry
Handelsregister: Amtsgericht Hildesheim, HRA 2686
Hannoversche Str. 2, 31134 Hildesheim, Germany
Phone: +49-5121-206917-0 | Fax: +49-5121-206917-9

--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

2006-10-11 21:52:10

by Michael Ira Krufky

[permalink] [raw]
Subject: Re: [patch 48/67] Fix VIDIOC_ENUMSTD bug

Jonathan Corbet wrote:
>> So any application which passes in index=0 gets EINVAL right off the bat
>> - and, in fact, this is what happens to mplayer. So I think the
>> following patch is called for, and maybe even appropriate for a 2.6.18.x
>> stable release.
>
> The fix is worth having, though I guess I'm no longer 100% sure it's
> necessary for -stable, since I don't think anything in-tree other than
> vivi uses this interface in 2.6.18. If you are going to include it,
> though, it makes sense to put in Sascha's fix too - both are needed to
> make the new v4l2 ioctl() interface operate as advertised.
>
> jon
>
>
> From: Sascha Hauer <[email protected]>
> Subject: [PATCH] copy-paste bug in videodev.c
> Date: Mon, 11 Sep 2006 10:50:55 +0200
> To: [email protected]
>
> This patch fixes a copy-paste bug in videodev.c where the vidioc_qbuf()
> function gets called for the dqbuf ioctl.
>
> Signed-off-by: Sascha Hauer <[email protected]>
>
> diff --git a/drivers/media/video/videodev.c
> b/drivers/media/video/videodev.c
> index 88bf2af..8abee33 100644
> --- a/drivers/media/video/videodev.c
> +++ b/drivers/media/video/videodev.c
> @@ -739,13 +739,13 @@ static int __video_do_ioctl(struct inode
> case VIDIOC_DQBUF:
> {
> struct v4l2_buffer *p=arg;
> - if (!vfd->vidioc_qbuf)
> + if (!vfd->vidioc_dqbuf)
> break;
> ret = check_fmt (vfd, p->type);
> if (ret)
> break;
>
> - ret=vfd->vidioc_qbuf(file, fh, p);
> + ret=vfd->vidioc_dqbuf(file, fh, p);
> if (!ret)
> dbgbuf(cmd,vfd,p);
> break;
>
>

This is fine with me... I have added cc to Mauro, he might want to add
his sign-off as well.

Signed-off-by: Michael Krufky <[email protected]>

2006-10-11 22:00:27

by Greg KH

[permalink] [raw]
Subject: Re: [patch 00/67] 2.6.18-stable review

On Wed, Oct 11, 2006 at 05:36:48PM -0400, Dave Jones wrote:
> On Wed, Oct 11, 2006 at 02:03:10PM -0700, Greg KH wrote:
> > This is the start of the stable review cycle for the 2.6.18.1 release.
> > There are 67 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 [email protected] to
> > add your name to the list. If you want to be off the reviewer list,
> > also email us.
> >
> > Responses should be made by Friday, October 13, 20:00:00 UTC. Anything
> > received after that time might be too late.
> >
> > And yes, we realize that this is a large number of patches, sorry, we
> > have been a bit slow in responding lately. If there are any patches
> > that have been sent to us for the 2.6.18-stable tree, that are not in
> > this series, please resend them, as we think we are finally caught up
> > with this work.
> >
> > An all-in-one patch for this series can be found at:
> > http://www.kernel.org/pub/linux/kernel/people/gregkh/stable/patch-2.6.18.1-rc1.gz
> > if anyone wants to test this out that way.
>
> Is it intentional that this adds a include/linux/utsrelease.h ?
> I don't see any patch that adds it in the review mails, but its there in the gz.

Hm, I guess the dontdiff file wasn't updated, as I built and booted out
of that directory, so that is where it came from. Sorry about that.

Anyone want to update dontdiff? :)

thanks,

greg k-h

2006-10-11 22:11:49

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [patch 48/67] Fix VIDIOC_ENUMSTD bug

Em Qua, 2006-10-11 ?s 17:49 -0400, Michael Krufky escreveu:
> Jonathan Corbet wrote:
> >> So any application which passes in index=0 gets EINVAL right off the bat
> >> - and, in fact, this is what happens to mplayer. So I think the
> >> following patch is called for, and maybe even appropriate for a 2.6.18.x
> >> stable release.
> >
> > The fix is worth having, though I guess I'm no longer 100% sure it's
> > necessary for -stable, since I don't think anything in-tree other than
> > vivi uses this interface in 2.6.18.
True. No real reason to fix into stable. On the other hand, it won't
hurt -stable to have this fix.

> > If you are going to include it,
> > though, it makes sense to put in Sascha's fix too - both are needed to
> > make the new v4l2 ioctl() interface operate as advertised.

> This is fine with me... I have added cc to Mauro, he might want to add
> his sign-off as well.
By applying patch 48 into -stable, for sure Sascha fix is required.

>
> Signed-off-by: Michael Krufky <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

Cheers,
Mauro.

2006-10-11 22:19:15

by Dave Jones

[permalink] [raw]
Subject: Re: [patch 00/67] 2.6.18-stable review

On Wed, Oct 11, 2006 at 02:59:43PM -0700, Greg KH wrote:

> Hm, I guess the dontdiff file wasn't updated, as I built and booted out
> of that directory, so that is where it came from. Sorry about that.
>
> Anyone want to update dontdiff? :)

Hmm..

(18:17:33:davej@nwo:local-git)$ grep utsrelease Documentation/dontdiff
utsrelease.h*
(18:17:37:davej@nwo:local-git)$

Shouldn't that match ?

Dave

--
http://www.codemonkey.org.uk

2006-10-11 22:20:13

by Dave Jones

[permalink] [raw]
Subject: Re: [patch 00/67] 2.6.18-stable review

On Wed, Oct 11, 2006 at 02:59:43PM -0700, Greg KH wrote:

> > Is it intentional that this adds a include/linux/utsrelease.h ?
> > I don't see any patch that adds it in the review mails, but its there in the gz.
>
> Hm, I guess the dontdiff file wasn't updated, as I built and booted out
> of that directory, so that is where it came from. Sorry about that.
>
> Anyone want to update dontdiff? :)

Ah, was looking at wrong tree. It's not in -stable..

Signed-off-by: Dave Jones <[email protected]>

--- 1/Documentation/dontdiff 2006-09-19 23:42:06.000000000 -0400
+++ 2/Documentation/dontdiff 2006-10-11 14:21:40.000000000 -0400
@@ -135,6 +135,7 @@
times.h*
tkparse
trix_boot.h
+utsrelease.h*
version.h*
vmlinux
vmlinux-*

--
http://www.codemonkey.org.uk

2006-10-11 23:06:50

by Greg KH

[permalink] [raw]
Subject: Re: [stable] [patch 06/67] Video: cx24123: fix PLL divisor setup

On Wed, Oct 11, 2006 at 05:36:20PM -0400, Michael Krufky wrote:
> Greg KH wrote:
> > On Wed, Oct 11, 2006 at 05:15:35PM -0400, Michael Krufky wrote:
> >> Greg KH wrote:
> >>> -stable review patch. If anyone has any objections, please let us know.
> >>>
> >>> ------------------
> >>> From: Yeasah Pell <[email protected]>
> >>>
> >>> The cx24109 datasheet says: "NOTE: if A=0, then N=N+1"
> >>>
> >>> The current code is the result of a misinterpretation of the datasheet to
> >>> mean exactly the opposite of the requirement -- The actual value of N is 1
> >>> greater than the value written when A is 0, so 1 needs to be *subtracted*
> >>> from it to compensate.
> >>>
> >>> Signed-off-by: Yeasah Pell <[email protected]>
> >>> Signed-off-by: Steven Toth <[email protected]>
> >>> Signed-off-by: Michael Krufky <[email protected]>
> >>> Signed-off-by: Greg Kroah-Hartman <[email protected]>
> >> Greg,
> >>
> >> When you apply this patch to your 2.6.18.y tree (and also to your
> >> 2.6.17.y tree) , can you please preceed the patch title with 'DVB'
> >> instead of 'VIDEO' ?
> >>
> >> I'll be sure to specify the subsystem, instead of only the driver name
> >> in future patches.
> >
> > Yes, it's better for you to specifiy it, instead of having me guess at
> > what it should be classified as :)
> >
> > I'll try to go edit the existing patches to fix this,
>
> OOPS! I just saw your -stable commit.
>
> Slight misunderstanding, Greg...
>
> Out of those six patches that I sent to you, only "cx24123: fix PLL
> divisor setup" is a DVB patch... The remaining 5 patches are V4L patches.
>
> Sorry for the confusion.

Ok, can you check this latest change to make sure I got it right this
time? And the .17 patches were all DVB: right?

thanks,

greg k-h

2006-10-11 23:06:42

by Greg KH

[permalink] [raw]
Subject: Re: [stable] [patch 00/67] 2.6.18-stable review

On Wed, Oct 11, 2006 at 06:19:24PM -0400, Dave Jones wrote:
> On Wed, Oct 11, 2006 at 02:59:43PM -0700, Greg KH wrote:
>
> > > Is it intentional that this adds a include/linux/utsrelease.h ?
> > > I don't see any patch that adds it in the review mails, but its there in the gz.
> >
> > Hm, I guess the dontdiff file wasn't updated, as I built and booted out
> > of that directory, so that is where it came from. Sorry about that.
> >
> > Anyone want to update dontdiff? :)
>
> Ah, was looking at wrong tree. It's not in -stable..
>
> Signed-off-by: Dave Jones <[email protected]>
>
> --- 1/Documentation/dontdiff 2006-09-19 23:42:06.000000000 -0400
> +++ 2/Documentation/dontdiff 2006-10-11 14:21:40.000000000 -0400
> @@ -135,6 +135,7 @@
> times.h*
> tkparse
> trix_boot.h
> +utsrelease.h*
> version.h*
> vmlinux
> vmlinux-*

Thanks, will queue it up for the next -stable release.

greg k-h

2006-10-11 23:07:09

by Greg KH

[permalink] [raw]
Subject: Re: [stable] [patch 48/67] Fix VIDIOC_ENUMSTD bug

On Wed, Oct 11, 2006 at 07:10:49PM -0300, Mauro Carvalho Chehab wrote:
> Em Qua, 2006-10-11 ?s 17:49 -0400, Michael Krufky escreveu:
> > Jonathan Corbet wrote:
> > >> So any application which passes in index=0 gets EINVAL right off the bat
> > >> - and, in fact, this is what happens to mplayer. So I think the
> > >> following patch is called for, and maybe even appropriate for a 2.6.18.x
> > >> stable release.
> > >
> > > The fix is worth having, though I guess I'm no longer 100% sure it's
> > > necessary for -stable, since I don't think anything in-tree other than
> > > vivi uses this interface in 2.6.18.
> True. No real reason to fix into stable. On the other hand, it won't
> hurt -stable to have this fix.
>
> > > If you are going to include it,
> > > though, it makes sense to put in Sascha's fix too - both are needed to
> > > make the new v4l2 ioctl() interface operate as advertised.
>
> > This is fine with me... I have added cc to Mauro, he might want to add
> > his sign-off as well.
> By applying patch 48 into -stable, for sure Sascha fix is required.
>
> >
> > Signed-off-by: Michael Krufky <[email protected]>
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>

Thanks, now added.

greg k-h

2006-10-11 23:59:00

by Michael Ira Krufky

[permalink] [raw]
Subject: Re: [stable] [patch 06/67] Video: cx24123: fix PLL divisor setup

Greg KH wrote:
> On Wed, Oct 11, 2006 at 05:36:20PM -0400, Michael Krufky wrote:

>>>> I'll be sure to specify the subsystem, instead of only the driver name
>>>> in future patches.
>>> Yes, it's better for you to specifiy it, instead of having me guess at
>>> what it should be classified as :)
>>>
>>> I'll try to go edit the existing patches to fix this,
>> OOPS! I just saw your -stable commit.
>>
>> Slight misunderstanding, Greg...
>>
>> Out of those six patches that I sent to you, only "cx24123: fix PLL
>> divisor setup" is a DVB patch... The remaining 5 patches are V4L patches.
>>
>> Sorry for the confusion.
>
> Ok, can you check this latest change to make sure I got it right this
> time? And the .17 patches were all DVB: right?

Greg,

The 2.6.18.y queue is fine now. As for the 2.6.17.y queue, it should read as follows:

DVB: cx24123: fix PLL divisor setup
V4L: Fix msp343xG handling regression

The msp343xG patch needs to be changed from DVB to V4L.

Thanks,

Michael Krufky

2006-10-12 04:13:22

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [patch 00/67] 2.6.18-stable review

On Wed, Oct 11, 2006 at 02:03:10PM -0700, Greg KH wrote:
> And yes, we realize that this is a large number of patches, sorry...

I number of these patches were cleanups, such as removing code betewen
#if 0, removing header files from being exported, etc. Not bad
things, but I wouldn't have thought it would have met the criteria for
being added to -stable. Are you intentionally relaxing the criteria?

Regards,

- Ted

2006-10-12 07:30:18

by Arjan van de Ven

[permalink] [raw]
Subject: Re: [patch 17/67] Fix longstanding load balancing bug in the scheduler

On Wed, 2006-10-11 at 14:04 -0700, Greg KH wrote:
> plain text document attachment
> (fix-longstanding-load-balancing-bug-in-the-scheduler.patch)
> -stable review patch. If anyone has any objections, please let us know.
>
> ------------------
> From: Christoph Lameter <[email protected]>
>
> The scheduler will stop load balancing if the most busy processor contains
> processes pinned via processor affinity.


a scheduler change sounds awefully risky for a -stable release,
especially if the head patch with it isn't fully released yet (so very
limited tested).....

as such I'd yank this from this stable release and leave it out until at
least 2.6.19 has been out for a while without complaints about
scheduling.



2006-10-12 07:31:26

by Arjan van de Ven

[permalink] [raw]
Subject: Re: [patch 18/67] zone_reclaim: dynamic slab reclaim

On Wed, 2006-10-11 at 14:04 -0700, Greg KH wrote:
> plain text document attachment
> (zone_reclaim-dynamic-slab-reclaim.patch)
> -stable review patch. If anyone has any objections, please let us know.
>
> ------------------
> From: Christoph Lameter <[email protected]>
>
> http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=0ff38490c836dc379ff7ec45b10a15a662f4e5f6
>
>
> Currently one can enable slab reclaim by setting an explicit option in
> /proc/sys/vm/zone_reclaim_mode. Slab reclaim is then used as a final
> option if the freeing of unmapped file backed pages is not enough to free
> enough pages to allow a local allocation.


this one adds a feature rather than a bugfix........

2006-10-12 10:05:43

by Christoph Lameter

[permalink] [raw]
Subject: Re: [patch 18/67] zone_reclaim: dynamic slab reclaim

On Thu, 12 Oct 2006, Arjan van de Ven wrote:

> this one adds a feature rather than a bugfix........

The existing slab reclaim "feature" in zone reclaim was not working
right (was done earlier when no good VM statistics were available). This
makes it work but we had to do some minor things differently.

2006-10-12 11:55:50

by Jan Kara

[permalink] [raw]
Subject: Re: [patch 16/67] jbd: fix commit of ordered data buffers

Hi,

> -stable review patch. If anyone has any objections, please let us know.
There does not seem to be any obvious issues with this change and it
fixes a real BUG happenning during some stress-testing. On the other hand
the change is kind of intrusive and changes a quite complex code (or
better said code with complex interactions). So I'm not sure if it really is
-stable material...

Honza

> ------------------
> From: Jan Kara <[email protected]>
>
> Original commit code assumes, that when a buffer on BJ_SyncData list is
> locked, it is being written to disk. But this is not true and hence it can
> lead to a potential data loss on crash. Also the code didn't count with
> the fact that journal_dirty_data() can steal buffers from committing
> transaction and hence could write buffers that no longer belong to the
> committing transaction. Finally it could possibly happen that we tried
> writing out one buffer several times.
>
> The patch below tries to solve these problems by a complete rewrite of the
> data commit code. We go through buffers on t_sync_datalist, lock buffers
> needing write out and store them in an array. Buffers are also immediately
> refiled to BJ_Locked list or unfiled (if the write out is completed). When
> the array is full or we have to block on buffer lock, we submit all
> accumulated buffers for IO.
>
> [suitable for 2.6.18.x around the 2.6.19-rc2 timeframe]
>
> Signed-off-by: Jan Kara <[email protected]>
> Cc: Badari Pulavarty <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>
> ---
> fs/jbd/commit.c | 182 ++++++++++++++++++++++++++++++++++----------------------
> 1 file changed, 113 insertions(+), 69 deletions(-)
>
> --- linux-2.6.18.orig/fs/jbd/commit.c
> +++ linux-2.6.18/fs/jbd/commit.c
> @@ -160,6 +160,117 @@ static int journal_write_commit_record(j
> return (ret == -EIO);
> }
>
> +void journal_do_submit_data(struct buffer_head **wbuf, int bufs)
> +{
> + int i;
> +
> + for (i = 0; i < bufs; i++) {
> + wbuf[i]->b_end_io = end_buffer_write_sync;
> + /* We use-up our safety reference in submit_bh() */
> + submit_bh(WRITE, wbuf[i]);
> + }
> +}
> +
> +/*
> + * Submit all the data buffers to disk
> + */
> +static void journal_submit_data_buffers(journal_t *journal,
> + transaction_t *commit_transaction)
> +{
> + struct journal_head *jh;
> + struct buffer_head *bh;
> + int locked;
> + int bufs = 0;
> + struct buffer_head **wbuf = journal->j_wbuf;
> +
> + /*
> + * Whenever we unlock the journal and sleep, things can get added
> + * onto ->t_sync_datalist, so we have to keep looping back to
> + * write_out_data until we *know* that the list is empty.
> + *
> + * Cleanup any flushed data buffers from the data list. Even in
> + * abort mode, we want to flush this out as soon as possible.
> + */
> +write_out_data:
> + cond_resched();
> + spin_lock(&journal->j_list_lock);
> +
> + while (commit_transaction->t_sync_datalist) {
> + jh = commit_transaction->t_sync_datalist;
> + bh = jh2bh(jh);
> + locked = 0;
> +
> + /* Get reference just to make sure buffer does not disappear
> + * when we are forced to drop various locks */
> + get_bh(bh);
> + /* If the buffer is dirty, we need to submit IO and hence
> + * we need the buffer lock. We try to lock the buffer without
> + * blocking. If we fail, we need to drop j_list_lock and do
> + * blocking lock_buffer().
> + */
> + if (buffer_dirty(bh)) {
> + if (test_set_buffer_locked(bh)) {
> + BUFFER_TRACE(bh, "needs blocking lock");
> + spin_unlock(&journal->j_list_lock);
> + /* Write out all data to prevent deadlocks */
> + journal_do_submit_data(wbuf, bufs);
> + bufs = 0;
> + lock_buffer(bh);
> + spin_lock(&journal->j_list_lock);
> + }
> + locked = 1;
> + }
> + /* We have to get bh_state lock. Again out of order, sigh. */
> + if (!inverted_lock(journal, bh)) {
> + jbd_lock_bh_state(bh);
> + spin_lock(&journal->j_list_lock);
> + }
> + /* Someone already cleaned up the buffer? */
> + if (!buffer_jbd(bh)
> + || jh->b_transaction != commit_transaction
> + || jh->b_jlist != BJ_SyncData) {
> + jbd_unlock_bh_state(bh);
> + if (locked)
> + unlock_buffer(bh);
> + BUFFER_TRACE(bh, "already cleaned up");
> + put_bh(bh);
> + continue;
> + }
> + if (locked && test_clear_buffer_dirty(bh)) {
> + BUFFER_TRACE(bh, "needs writeout, adding to array");
> + wbuf[bufs++] = bh;
> + __journal_file_buffer(jh, commit_transaction,
> + BJ_Locked);
> + jbd_unlock_bh_state(bh);
> + if (bufs == journal->j_wbufsize) {
> + spin_unlock(&journal->j_list_lock);
> + journal_do_submit_data(wbuf, bufs);
> + bufs = 0;
> + goto write_out_data;
> + }
> + }
> + else {
> + BUFFER_TRACE(bh, "writeout complete: unfile");
> + __journal_unfile_buffer(jh);
> + jbd_unlock_bh_state(bh);
> + if (locked)
> + unlock_buffer(bh);
> + journal_remove_journal_head(bh);
> + /* Once for our safety reference, once for
> + * journal_remove_journal_head() */
> + put_bh(bh);
> + put_bh(bh);
> + }
> +
> + if (lock_need_resched(&journal->j_list_lock)) {
> + spin_unlock(&journal->j_list_lock);
> + goto write_out_data;
> + }
> + }
> + spin_unlock(&journal->j_list_lock);
> + journal_do_submit_data(wbuf, bufs);
> +}
> +
> /*
> * journal_commit_transaction
> *
> @@ -313,80 +424,13 @@ void journal_commit_transaction(journal_
> * Now start flushing things to disk, in the order they appear
> * on the transaction lists. Data blocks go first.
> */
> -
> err = 0;
> - /*
> - * Whenever we unlock the journal and sleep, things can get added
> - * onto ->t_sync_datalist, so we have to keep looping back to
> - * write_out_data until we *know* that the list is empty.
> - */
> - bufs = 0;
> - /*
> - * Cleanup any flushed data buffers from the data list. Even in
> - * abort mode, we want to flush this out as soon as possible.
> - */
> -write_out_data:
> - cond_resched();
> - spin_lock(&journal->j_list_lock);
> -
> - while (commit_transaction->t_sync_datalist) {
> - struct buffer_head *bh;
> -
> - jh = commit_transaction->t_sync_datalist;
> - commit_transaction->t_sync_datalist = jh->b_tnext;
> - bh = jh2bh(jh);
> - if (buffer_locked(bh)) {
> - BUFFER_TRACE(bh, "locked");
> - if (!inverted_lock(journal, bh))
> - goto write_out_data;
> - __journal_temp_unlink_buffer(jh);
> - __journal_file_buffer(jh, commit_transaction,
> - BJ_Locked);
> - jbd_unlock_bh_state(bh);
> - if (lock_need_resched(&journal->j_list_lock)) {
> - spin_unlock(&journal->j_list_lock);
> - goto write_out_data;
> - }
> - } else {
> - if (buffer_dirty(bh)) {
> - BUFFER_TRACE(bh, "start journal writeout");
> - get_bh(bh);
> - wbuf[bufs++] = bh;
> - if (bufs == journal->j_wbufsize) {
> - jbd_debug(2, "submit %d writes\n",
> - bufs);
> - spin_unlock(&journal->j_list_lock);
> - ll_rw_block(SWRITE, bufs, wbuf);
> - journal_brelse_array(wbuf, bufs);
> - bufs = 0;
> - goto write_out_data;
> - }
> - } else {
> - BUFFER_TRACE(bh, "writeout complete: unfile");
> - if (!inverted_lock(journal, bh))
> - goto write_out_data;
> - __journal_unfile_buffer(jh);
> - jbd_unlock_bh_state(bh);
> - journal_remove_journal_head(bh);
> - put_bh(bh);
> - if (lock_need_resched(&journal->j_list_lock)) {
> - spin_unlock(&journal->j_list_lock);
> - goto write_out_data;
> - }
> - }
> - }
> - }
> -
> - if (bufs) {
> - spin_unlock(&journal->j_list_lock);
> - ll_rw_block(SWRITE, bufs, wbuf);
> - journal_brelse_array(wbuf, bufs);
> - spin_lock(&journal->j_list_lock);
> - }
> + journal_submit_data_buffers(journal, commit_transaction);
>
> /*
> * Wait for all previously submitted IO to complete.
> */
> + spin_lock(&journal->j_list_lock);
> while (commit_transaction->t_locked_list) {
> struct buffer_head *bh;
>
>
> --
--
Jan Kara <[email protected]>
SuSE CR Labs

2006-10-12 13:44:45

by John W. Linville

[permalink] [raw]
Subject: Re: [patch 11/67] zd1211rw: ZD1211B ASIC/FWT, not jointly decoder

On Wed, Oct 11, 2006 at 02:04:12PM -0700, Greg KH wrote:
>
> -stable review patch. If anyone has any objections, please let us know.
>
> ------------------
> From: Daniel Drake <[email protected]>
>
> The vendor driver chooses this value based on an ifndef ASIC,
> and ASIC is never defined.

ACK

--
John W. Linville
[email protected]

2006-10-12 16:45:38

by Greg KH

[permalink] [raw]
Subject: Re: [stable] [patch 00/67] 2.6.18-stable review

On Wed, Oct 11, 2006 at 08:42:44PM -0400, Theodore Tso wrote:
> On Wed, Oct 11, 2006 at 02:03:10PM -0700, Greg KH wrote:
> > And yes, we realize that this is a large number of patches, sorry...
>
> I number of these patches were cleanups, such as removing code betewen
> #if 0, removing header files from being exported, etc. Not bad
> things, but I wouldn't have thought it would have met the criteria for
> being added to -stable. Are you intentionally relaxing the criteria?

The header file stuff was intentionally added, as it is good to have the
header files exported properly. Those were a large number of these
patches.

If you have specific questions about any one patch, please let us know.
I didn't purposefully take any "cleanup" type patch that I know of, but
there was a lot here, so one might have slipped in...

thanks,

greg k-h

2006-10-12 16:53:20

by Dave Jones

[permalink] [raw]
Subject: Re: [stable] [patch 00/67] 2.6.18-stable review

On Thu, Oct 12, 2006 at 09:35:22AM -0700, Greg Kroah-Hartman wrote:
> On Wed, Oct 11, 2006 at 08:42:44PM -0400, Theodore Tso wrote:
> > On Wed, Oct 11, 2006 at 02:03:10PM -0700, Greg KH wrote:
> > > And yes, we realize that this is a large number of patches, sorry...
> >
> > I number of these patches were cleanups, such as removing code betewen
> > #if 0, removing header files from being exported, etc. Not bad
> > things, but I wouldn't have thought it would have met the criteria for
> > being added to -stable. Are you intentionally relaxing the criteria?
>
> The header file stuff was intentionally added, as it is good to have the
> header files exported properly. Those were a large number of these
> patches.

Indeed. I see this as just 'finishing the job' rather than fixing something
that's busted though. That said, I was also carrying these in what will
be our 2.6.18 based update kernel for FC5 (and what will be FC6) for the
same reasons.

Dave

--
http://www.codemonkey.org.uk

2006-10-12 17:27:40

by Greg KH

[permalink] [raw]
Subject: Re: [patch 16/67] jbd: fix commit of ordered data buffers

On Thu, Oct 12, 2006 at 01:55:38PM +0200, Jan Kara wrote:
> Hi,
>
> > -stable review patch. If anyone has any objections, please let us know.
> There does not seem to be any obvious issues with this change and it
> fixes a real BUG happenning during some stress-testing. On the other hand
> the change is kind of intrusive and changes a quite complex code (or
> better said code with complex interactions). So I'm not sure if it really is
> -stable material...

I think it is, as it does fix a real issue, and the same patch is in
mainline now too.

thanks,

greg k-h

2006-10-14 05:36:48

by Greg KH

[permalink] [raw]
Subject: Re: [stable] [patch 06/67] Video: cx24123: fix PLL divisor setup

On Wed, Oct 11, 2006 at 07:58:51PM -0400, Michael Krufky wrote:
> The 2.6.18.y queue is fine now. As for the 2.6.17.y queue, it should read as follows:
>
> DVB: cx24123: fix PLL divisor setup
> V4L: Fix msp343xG handling regression
>
> The msp343xG patch needs to be changed from DVB to V4L.

Ok, fixed now.

thanks,

greg k-h