[patch 00/73] 2.6.23-stable review - Kernel

This is a discussion on [patch 00/73] 2.6.23-stable review - Kernel ; This is the start of the stable review cycle for the 2.6.23.15 release. There are 73 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please ...

+ Reply to Thread
Page 1 of 4 1 2 3 ... LastLast
Results 1 to 20 of 66

Thread: [patch 00/73] 2.6.23-stable review

  1. [patch 00/73] 2.6.23-stable review

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

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

    Responses should be made by Friday, Feb 8 2008 12:00:00 UTC. Anything
    received after that time might be too late.

    Note, this is going to be one of the last .23-stable releases, unless
    something major comes along.

    thanks,

    greg k-h
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. [patch 10/73] VLAN: Lost rtnl_unlock() in vlan_ioctl()

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Pavel Emelyanov

    [VLAN]: Lost rtnl_unlock() in vlan_ioctl()

    [ Upstream commit: e35de02615f97b785dc6f73cba421cea06bcbd10 ]

    The SET_VLAN_NAME_TYPE_CMD command w/o CAP_NET_ADMIN capability
    doesn't release the rtnl lock.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    net/8021q/vlan.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/net/8021q/vlan.c
    +++ b/net/8021q/vlan.c
    @@ -768,7 +768,7 @@ static int vlan_ioctl_handler(void __use
    case SET_VLAN_NAME_TYPE_CMD:
    err = -EPERM;
    if (!capable(CAP_NET_ADMIN))
    - return -EPERM;
    + break;
    if ((args.u.name_type >= 0) &&
    (args.u.name_type < VLAN_NAME_TYPE_HIGHEST)) {
    vlan_name_type = args.u.name_type;

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. [patch 03/73] dm crypt: fix write endio


    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Milan Broz

    patch adfe47702c4726b3e045f9f83178def02833be4c in mainline.

    Fix BIO_UPTODATE test for write io.

    Signed-off-by: Milan Broz
    Signed-off-by: Alasdair G Kergon
    Signed-off-by: Greg Kroah-Hartman

    ---
    drivers/md/dm-crypt.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    --- a/drivers/md/dm-crypt.c
    +++ b/drivers/md/dm-crypt.c
    @@ -515,6 +515,9 @@ static int crypt_endio(struct bio *clone
    struct crypt_config *cc = io->target->private;
    unsigned read_io = bio_data_dir(clone) == READ;

    + if (unlikely(!bio_flagged(clone, BIO_UPTODATE) && !error))
    + error = -EIO;
    +
    /*
    * free the processed pages, even if
    * it's only a partially completed write
    @@ -529,10 +532,8 @@ static int crypt_endio(struct bio *clone
    if (!read_io)
    goto out;

    - if (unlikely(!bio_flagged(clone, BIO_UPTODATE))) {
    - error = -EIO;
    + if (unlikely(error))
    goto out;
    - }

    bio_put(clone);
    io->post_process = 1;

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. [patch 01/73] SPARC64: Fix sparc64 cpu cross call hangs.

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

    From: David Miller

    [SPARC64]: Fix endless loop in cheetah_xcall_deliver().

    [ Upsteam commit: 0de56d1ab83323d604d95ca193dcbd28388dbabb ]

    We need to mask out the proper bits when testing the dispatch status
    register else we can see unrelated NACK bits from previous cross call
    sends.

    Signed-off-by: David S. Miller
    ---
    arch/sparc64/kernel/smp.c | 19 +++++++++++++------
    1 files changed, 13 insertions(+), 6 deletions(-)

    diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
    index 894b506..c399449 100644
    --- a/arch/sparc64/kernel/smp.c
    +++ b/arch/sparc64/kernel/smp.c
    @@ -476,7 +476,7 @@ static inline void spitfire_xcall_deliver(u64 data0, u64 data1, u64 data2, cpuma
    */
    static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mask)
    {
    - u64 pstate, ver;
    + u64 pstate, ver, busy_mask;
    int nack_busy_id, is_jbus, need_more;

    if (cpus_empty(mask))
    @@ -508,14 +508,20 @@ retry:
    "i" (ASI_INTR_W));

    nack_busy_id = 0;
    + busy_mask = 0;
    {
    int i;

    for_each_cpu_mask(i, mask) {
    u64 target = (i << 14) | 0x70;

    - if (!is_jbus)
    + if (is_jbus) {
    + busy_mask |= (0x1UL << (i * 2));
    + } else {
    target |= (nack_busy_id << 24);
    + busy_mask |= (0x1UL <<
    + (nack_busy_id * 2));
    + }
    __asm__ __volatile__(
    "stxa %%g0, [%0] %1\n\t"
    "membar #Sync\n\t"
    @@ -531,15 +537,16 @@ retry:

    /* Now, poll for completion. */
    {
    - u64 dispatch_stat;
    + u64 dispatch_stat, nack_mask;
    long stuck;

    stuck = 100000 * nack_busy_id;
    + nack_mask = busy_mask << 1;
    do {
    __asm__ __volatile__("ldxa [%%g0] %1, %0"
    : "=r" (dispatch_stat)
    : "i" (ASI_INTR_DISPATCH_STAT));
    - if (dispatch_stat == 0UL) {
    + if (!(dispatch_stat & (busy_mask | nack_mask))) {
    __asm__ __volatile__("wrpr %0, 0x0, %%pstate"
    : : "r" (pstate));
    if (unlikely(need_more)) {
    @@ -556,12 +563,12 @@ retry:
    }
    if (!--stuck)
    break;
    - } while (dispatch_stat & 0x5555555555555555UL);
    + } while (dispatch_stat & busy_mask);

    __asm__ __volatile__("wrpr %0, 0x0, %%pstate"
    : : "r" (pstate));

    - if ((dispatch_stat & ~(0x5555555555555555UL)) == 0) {
    + if (dispatch_stat & busy_mask) {
    /* Busy bits will not clear, continue instead
    * of freezing up on this cpu.
    */
    --
    1.5.3.7

    _______________________________________________
    stable mailing list
    stable@linux.kernel.org
    http://linux.kernel.org/mailman/listinfo/stable

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  5. [patch 18/73] NET: kaweth was forgotten in msec switchover of usb_start_wait_urb

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Russ Dill

    [NET]: kaweth was forgotten in msec switchover of usb_start_wait_urb

    [ Upstream commit: 2b2b2e35b71e5be8bc06cc0ff38df15dfedda19b ]

    Back in 2.6.12-pre, usb_start_wait_urb was switched over to take
    milliseconds instead of jiffies. kaweth.c was never updated to match.

    Signed-off-by: Russ Dill
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

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

    --- a/drivers/net/usb/kaweth.c
    +++ b/drivers/net/usb/kaweth.c
    @@ -70,7 +70,7 @@
    #define KAWETH_TX_TIMEOUT (5 * HZ)
    #define KAWETH_SCRATCH_SIZE 32
    #define KAWETH_FIRMWARE_BUF_SIZE 4096
    -#define KAWETH_CONTROL_TIMEOUT (30 * HZ)
    +#define KAWETH_CONTROL_TIMEOUT (30000)

    #define KAWETH_STATUS_BROKEN 0x0000001
    #define KAWETH_STATUS_CLOSING 0x0000002

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  6. [patch 15/73] POWERPC: Change fallocate to match unistd.h on powerpc

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Patrick Mansfield

    patch f2205fbb5a8933514fd343cc329df631802b4543 in mainline.

    Fix the fallocate system call on powerpc to match its unistd.h.

    This implies none of these system calls are currently working with the
    unistd.h sys call values:
    fallocate
    signalfd
    timerfd
    eventfd
    sync_file_range2

    Signed-off-by: Patrick Mansfield
    Acked-by: Anton Blanchard
    Signed-off-by: Paul Mackerras
    Signed-off-by: Greg Kroah-Hartman

    ---
    include/asm-powerpc/systbl.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/include/asm-powerpc/systbl.h
    +++ b/include/asm-powerpc/systbl.h
    @@ -308,8 +308,8 @@ COMPAT_SYS_SPU(move_pages)
    SYSCALL_SPU(getcpu)
    COMPAT_SYS(epoll_pwait)
    COMPAT_SYS_SPU(utimensat)
    -COMPAT_SYS(fallocate)
    COMPAT_SYS_SPU(signalfd)
    COMPAT_SYS_SPU(timerfd)
    SYSCALL_SPU(eventfd)
    COMPAT_SYS_SPU(sync_file_range2)
    +COMPAT_SYS(fallocate)

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  7. [patch 17/73] NET: mcs7830 passes msecs instead of jiffies to usb_control_msg

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Russ Dill

    [NET]: mcs7830 passes msecs instead of jiffies to usb_control_msg

    [ Upstream commit 1d39da3dcaad4231f0fa75024b1d6d710a2ced74 ]

    usb_control_msg was changed long ago (2.6.12-pre) to take milliseconds
    instead of jiffies. Oddly, mcs7830 wasn't added until 2.6.19-rc3.

    Signed-off-by: Russ Dill
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

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

    --- a/drivers/net/usb/mcs7830.c
    +++ b/drivers/net/usb/mcs7830.c
    @@ -94,7 +94,7 @@ static int mcs7830_get_reg(struct usbnet

    ret = usb_control_msg(xdev, usb_rcvctrlpipe(xdev, 0), MCS7830_RD_BREQ,
    MCS7830_RD_BMREQ, 0x0000, index, data,
    - size, msecs_to_jiffies(MCS7830_CTRL_TIMEOUT));
    + size, MCS7830_CTRL_TIMEOUT);
    return ret;
    }

    @@ -105,7 +105,7 @@ static int mcs7830_set_reg(struct usbnet

    ret = usb_control_msg(xdev, usb_sndctrlpipe(xdev, 0), MCS7830_WR_BREQ,
    MCS7830_WR_BMREQ, 0x0000, index, data,
    - size, msecs_to_jiffies(MCS7830_CTRL_TIMEOUT));
    + size, MCS7830_CTRL_TIMEOUT);
    return ret;
    }


    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  8. [patch 24/73] ATM: delay irq setup until card is configured

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Chas Williams

    [ATM]: [nicstar] delay irq setup until card is configured

    [ Upstream commit: 52961955aa180959158faeb9fd6b4f8a591450f5 ]

    Signed-off-by: Chas Williams
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    drivers/atm/nicstar.c | 19 +++++++++----------
    1 file changed, 9 insertions(+), 10 deletions(-)

    --- a/drivers/atm/nicstar.c
    +++ b/drivers/atm/nicstar.c
    @@ -625,14 +625,6 @@ static int __devinit ns_init_card(int i,
    if (mac[i] == NULL)
    nicstar_init_eprom(card->membase);

    - if (request_irq(pcidev->irq, &ns_irq_handler, IRQF_DISABLED | IRQF_SHARED, "nicstar", card) != 0)
    - {
    - printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
    - error = 9;
    - ns_init_card_error(card, error);
    - return error;
    - }
    -
    /* Set the VPI/VCI MSb mask to zero so we can receive OAM cells */
    writel(0x00000000, card->membase + VPM);

    @@ -858,8 +850,6 @@ static int __devinit ns_init_card(int i,
    card->iovpool.count++;
    }

    - card->intcnt = 0;
    -
    /* Configure NICStAR */
    if (card->rct_size == 4096)
    ns_cfg_rctsize = NS_CFG_RCTSIZE_4096_ENTRIES;
    @@ -868,6 +858,15 @@ static int __devinit ns_init_card(int i,

    card->efbie = 1;

    + card->intcnt = 0;
    + if (request_irq(pcidev->irq, &ns_irq_handler, IRQF_DISABLED | IRQF_SHARED, "nicstar", card) != 0)
    + {
    + printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
    + error = 9;
    + ns_init_card_error(card, error);
    + return error;
    + }
    +
    /* Register device */
    card->atmdev = atm_dev_register("nicstar", &atm_ops, -1, NULL);
    if (card->atmdev == NULL)

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  9. [patch 20/73] INET: Fix netdev renaming and inet address labels

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Mark McLoughlin

    [INET]: Fix netdev renaming and inet address labels

    [ Upstream commit: 44344b2a85f03326c7047a8c861b0c625c674839 ]

    When re-naming an interface, the previous secondary address
    labels get lost e.g.

    $> brctl addbr foo
    $> ip addr add 192.168.0.1 dev foo
    $> ip addr add 192.168.0.2 dev foo label foo:00
    $> ip addr show dev foo | grep inet
    inet 192.168.0.1/32 scope global foo
    inet 192.168.0.2/32 scope global foo:00
    $> ip link set foo name bar
    $> ip addr show dev bar | grep inet
    inet 192.168.0.1/32 scope global bar
    inet 192.168.0.2/32 scope global bar:2

    Turns out to be a simple thinko in inetdev_changename() - clearly we
    want to look at the address label, rather than the device name, for
    a suffix to retain.

    Signed-off-by: Mark McLoughlin
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

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

    --- a/net/ipv4/devinet.c
    +++ b/net/ipv4/devinet.c
    @@ -1030,7 +1030,7 @@ static void inetdev_changename(struct ne
    memcpy(ifa->ifa_label, dev->name, IFNAMSIZ);
    if (named++ == 0)
    continue;
    - dot = strchr(ifa->ifa_label, ':');
    + dot = strchr(old, ':');
    if (dot == NULL) {
    sprintf(old, ":%d", named);
    dot = old;

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  10. [patch 19/73] IRDA: irda_create() nuke user triggable printk

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: maximilian attems

    [IRDA]: irda_create() nuke user triggable printk

    [ Upstream commit: 9e8d6f8959c356d8294d45f11231331c3e1bcae6 ]

    easy to trigger as user with sfuzz.

    irda_create() is quiet on unknown sock->type,
    match this behaviour for SOCK_DGRAM unknown protocol

    Signed-off-by: maximilian attems
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    net/irda/af_irda.c | 2 --
    1 file changed, 2 deletions(-)

    --- a/net/irda/af_irda.c
    +++ b/net/irda/af_irda.c
    @@ -1115,8 +1115,6 @@ static int irda_create(struct socket *so
    self->max_sdu_size_rx = TTP_SAR_UNBOUND;
    break;
    default:
    - IRDA_ERROR("%s: protocol not supported!\n",
    - __FUNCTION__);
    return -ESOCKTNOSUPPORT;
    }
    break;

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  11. [patch 31/73] SPARC64: Fix OOPS in dma_sync_*_for_device()

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: David Miller

    [SPARC64]: Fix OOPS in dma_sync_*_for_device()

    [ Upstream commit: 36bb61346d9e64b55285f27363e93a6e96f2abba ]

    I included these operations vector cases for situations
    where we never need to do anything, the entries aren't
    filled in by any implementation, so we OOPS trying to
    invoke NULL pointer functions.

    Really make them NOPs, to fix the bug.

    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    include/asm-sparc64/dma-mapping.h | 12 +++---------
    1 file changed, 3 insertions(+), 9 deletions(-)

    --- a/include/asm-sparc64/dma-mapping.h
    +++ b/include/asm-sparc64/dma-mapping.h
    @@ -25,15 +25,9 @@ struct dma_ops {
    void (*sync_single_for_cpu)(struct device *dev,
    dma_addr_t dma_handle, size_t size,
    enum dma_data_direction direction);
    - void (*sync_single_for_device)(struct device *dev,
    - dma_addr_t dma_handle, size_t size,
    - enum dma_data_direction direction);
    void (*sync_sg_for_cpu)(struct device *dev, struct scatterlist *sg,
    int nelems,
    enum dma_data_direction direction);
    - void (*sync_sg_for_device)(struct device *dev, struct scatterlist *sg,
    - int nelems,
    - enum dma_data_direction direction);
    };
    extern const struct dma_ops *dma_ops;

    @@ -105,7 +99,7 @@ static inline void dma_sync_single_for_d
    size_t size,
    enum dma_data_direction direction)
    {
    - dma_ops->sync_single_for_device(dev, dma_handle, size, direction);
    + /* No flushing needed to sync cpu writes to the device. */
    }

    static inline void dma_sync_single_range_for_cpu(struct device *dev,
    @@ -123,7 +117,7 @@ static inline void dma_sync_single_range
    size_t size,
    enum dma_data_direction direction)
    {
    - dma_sync_single_for_device(dev, dma_handle+offset, size, direction);
    + /* No flushing needed to sync cpu writes to the device. */
    }


    @@ -138,7 +132,7 @@ static inline void dma_sync_sg_for_devic
    struct scatterlist *sg, int nelems,
    enum dma_data_direction direction)
    {
    - dma_ops->sync_sg_for_device(dev, sg, nelems, direction);
    + /* No flushing needed to sync cpu writes to the device. */
    }

    static inline int dma_mapping_error(dma_addr_t dma_addr)

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  12. [patch 30/73] CASSINI: Set skb->truesize properly on receive packets.

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: David Miller

    [ Upstream commit: d011a231675b240157a3c335dd53e9b849d7d30d ]

    skb->truesize was not being incremented at all to
    reflect the page based data added to RX SKBs.

    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

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

    --- a/drivers/net/cassini.c
    +++ b/drivers/net/cassini.c
    @@ -2037,6 +2037,7 @@ static int cas_rx_process_pkt(struct cas

    skb_shinfo(skb)->nr_frags++;
    skb->data_len += hlen - swivel;
    + skb->truesize += hlen - swivel;
    skb->len += hlen - swivel;

    get_page(page->buffer);

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  13. [patch 27/73] IPV4: ip_gre: set mac_header correctly in receive path

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Timo Teras

    [IPV4] ip_gre: set mac_header correctly in receive path

    [ Upstream commit: 1d0691674764098304ae4c63c715f5883b4d3784 ]

    mac_header update in ipgre_recv() was incorrectly changed to
    skb_reset_mac_header() when it was introduced.

    Signed-off-by: Timo Teras
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

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

    --- a/net/ipv4/ip_gre.c
    +++ b/net/ipv4/ip_gre.c
    @@ -613,7 +613,7 @@ static int ipgre_rcv(struct sk_buff *skb
    offset += 4;
    }

    - skb_reset_mac_header(skb);
    + skb->mac_header = skb->network_header;
    __pskb_pull(skb, offset);
    skb_reset_network_header(skb);
    skb_postpull_rcsum(skb, skb_transport_header(skb), offset);

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  14. [patch 29/73] CASSINI: Revert dont touch page_count.

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: David Miller

    [ Upstream commit: 9de4dfb4c7176e5bb232a21cdd8df78da2b15cac ]

    This reverts changeset fa4f0774d7c6cccb4d1fda76b91dd8eddcb2dd6a
    ([CASSINI]: dont touch page_count) because it breaks the driver.

    The local page counting added by this changeset did not account
    for the asynchronous page count changes done by kfree_skb()
    and friends.

    The change adds extra atomics and on top of it all appears to be
    totally unnecessary as well.

    Signed-off-by: David S. Miller
    Acked-by: Nick Piggin
    Signed-off-by: Greg Kroah-Hartman

    ---
    drivers/net/cassini.c | 36 ++++--------------------------------
    1 file changed, 4 insertions(+), 32 deletions(-)

    --- a/drivers/net/cassini.c
    +++ b/drivers/net/cassini.c
    @@ -336,30 +336,6 @@ static inline void cas_mask_intr(struct
    cas_disable_irq(cp, i);
    }

    -static inline void cas_buffer_init(cas_page_t *cp)
    -{
    - struct page *page = cp->buffer;
    - atomic_set((atomic_t *)&page->lru.next, 1);
    -}
    -
    -static inline int cas_buffer_count(cas_page_t *cp)
    -{
    - struct page *page = cp->buffer;
    - return atomic_read((atomic_t *)&page->lru.next);
    -}
    -
    -static inline void cas_buffer_inc(cas_page_t *cp)
    -{
    - struct page *page = cp->buffer;
    - atomic_inc((atomic_t *)&page->lru.next);
    -}
    -
    -static inline void cas_buffer_dec(cas_page_t *cp)
    -{
    - struct page *page = cp->buffer;
    - atomic_dec((atomic_t *)&page->lru.next);
    -}
    -
    static void cas_enable_irq(struct cas *cp, const int ring)
    {
    if (ring == 0) { /* all but TX_DONE */
    @@ -497,7 +473,6 @@ static int cas_page_free(struct cas *cp,
    {
    pci_unmap_page(cp->pdev, page->dma_addr, cp->page_size,
    PCI_DMA_FROMDEVICE);
    - cas_buffer_dec(page);
    __free_pages(page->buffer, cp->page_order);
    kfree(page);
    return 0;
    @@ -527,7 +502,6 @@ static cas_page_t *cas_page_alloc(struct
    page->buffer = alloc_pages(flags, cp->page_order);
    if (!page->buffer)
    goto page_err;
    - cas_buffer_init(page);
    page->dma_addr = pci_map_page(cp->pdev, page->buffer, 0,
    cp->page_size, PCI_DMA_FROMDEVICE);
    return page;
    @@ -606,7 +580,7 @@ static void cas_spare_recover(struct cas
    list_for_each_safe(elem, tmp, &list) {
    cas_page_t *page = list_entry(elem, cas_page_t, list);

    - if (cas_buffer_count(page) > 1)
    + if (page_count(page->buffer) > 1)
    continue;

    list_del(elem);
    @@ -1374,7 +1348,7 @@ static inline cas_page_t *cas_page_spare
    cas_page_t *page = cp->rx_pages[1][index];
    cas_page_t *new;

    - if (cas_buffer_count(page) == 1)
    + if (page_count(page->buffer) == 1)
    return page;

    new = cas_page_dequeue(cp);
    @@ -1394,7 +1368,7 @@ static cas_page_t *cas_page_swap(struct
    cas_page_t **page1 = cp->rx_pages[1];

    /* swap if buffer is in use */
    - if (cas_buffer_count(page0[index]) > 1) {
    + if (page_count(page0[index]->buffer) > 1) {
    cas_page_t *new = cas_page_spare(cp, index);
    if (new) {
    page1[index] = page0[index];
    @@ -2066,7 +2040,6 @@ static int cas_rx_process_pkt(struct cas
    skb->len += hlen - swivel;

    get_page(page->buffer);
    - cas_buffer_inc(page);
    frag->page = page->buffer;
    frag->page_offset = off;
    frag->size = hlen - swivel;
    @@ -2091,7 +2064,6 @@ static int cas_rx_process_pkt(struct cas
    frag++;

    get_page(page->buffer);
    - cas_buffer_inc(page);
    frag->page = page->buffer;
    frag->page_offset = 0;
    frag->size = hlen;
    @@ -2255,7 +2227,7 @@ static int cas_post_rxds_ringN(struct ca
    released = 0;
    while (entry != last) {
    /* make a new buffer if it's still in use */
    - if (cas_buffer_count(page[entry]) > 1) {
    + if (page_count(page[entry]->buffer) > 1) {
    cas_page_t *new = cas_page_dequeue(cp);
    if (!new) {
    /* let the timer know that we need to

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  15. [patch 16/73] X25: Add missing x25_neigh_put

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Julia Lawall

    [X25]: Add missing x25_neigh_put

    [ Upstream commit: 76975f8a3186dae501584d0155ea410464f62815 ]

    The function x25_get_neigh increments a reference count. At the point of
    the second goto out, the result of calling x25_get_neigh is only stored in
    a local variable, and thus no one outside the function will be able to
    decrease the reference count. Thus, x25_neigh_put should be called before
    the return in this case.

    The problem was found using the following semantic match.
    (http://www.emn.fr/x-info/coccinelle/)

    //

    @@
    type T,T1,T2;
    identifier E;
    statement S;
    expression x1,x2,x3;
    int ret;
    @@

    T E;
    ...
    * if ((E = x25_get_neigh(...)) == NULL)
    S
    ... when != x25_neigh_put(...,(T1)E,...)
    when != if (E != NULL) { ... x25_neigh_put(...,(T1)E,...); ...}
    when != x1 = (T1)E
    when != E = x3;
    when any
    if (...) {
    ... when != x25_neigh_put(...,(T2)E,...)
    when != if (E != NULL) { ... x25_neigh_put(...,(T2)E,...); ...}
    when != x2 = (T2)E
    (
    * return;
    |
    * return ret;
    )
    }
    //


    Signed-off-by: Julia Lawall
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    net/x25/x25_forward.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    --- a/net/x25/x25_forward.c
    +++ b/net/x25/x25_forward.c
    @@ -118,13 +118,14 @@ int x25_forward_data(int lci, struct x25
    goto out;

    if ( (skbn = pskb_copy(skb, GFP_ATOMIC)) == NULL){
    - goto out;
    + goto output;

    }
    x25_transmit_link(skbn, nb);

    - x25_neigh_put(nb);
    rc = 1;
    +output:
    + x25_neigh_put(nb);
    out:
    return rc;
    }

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  16. [patch 22/73] ATM: Check IP header validity in mpc_send_packet

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Herbert Xu

    [ATM]: Check IP header validity in mpc_send_packet

    [ Upstream commit: 1c9b7aa1eb40ab708ef3242f74b9a61487623168 ]

    Al went through the ip_fast_csum callers and found this piece of code
    that did not validate the IP header. While root crashing the machine
    by sending bogus packets through raw or AF_PACKET sockets isn't that
    serious, it is still nice to react gracefully.

    This patch ensures that the skb has enough data for an IP header and
    that the header length field is valid.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    net/atm/mpc.c | 7 +++++++
    1 file changed, 7 insertions(+)

    --- a/net/atm/mpc.c
    +++ b/net/atm/mpc.c
    @@ -542,6 +542,13 @@ static int mpc_send_packet(struct sk_buf
    if (eth->h_proto != htons(ETH_P_IP))
    goto non_ip; /* Multi-Protocol Over ATM :-) */

    + /* Weed out funny packets (e.g., AF_PACKET or raw). */
    + if (skb->len < ETH_HLEN + sizeof(struct iphdr))
    + goto non_ip;
    + skb_set_network_header(skb, ETH_HLEN);
    + if (skb->len < ETH_HLEN + ip_hdr(skb)->ihl * 4 || ip_hdr(skb)->ihl < 5)
    + goto non_ip;
    +
    while (i < mpc->number_of_mps_macs) {
    if (!compare_ether_addr(eth->h_dest, (mpc->mps_macs + i*ETH_ALEN)))
    if ( send_via_shortcut(skb, mpc) == 0 ) /* try shortcut */

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  17. [patch 32/73] SPARC64: Implement pci_resource_to_user()

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: David Miller

    [SPARC64]: Implement pci_resource_to_user()

    [ Upstream commit: bcea1db16ba1c45ccebb3bfb8441642d1342c4d5 ]

    This makes libpciaccess able to mmap() resources of the
    device properly.

    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    arch/sparc64/kernel/pci.c | 16 ++++++++++++++++
    include/asm-sparc64/pci.h | 4 ++++
    2 files changed, 20 insertions(+)

    --- a/arch/sparc64/kernel/pci.c
    +++ b/arch/sparc64/kernel/pci.c
    @@ -1276,4 +1276,20 @@ int pci_dma_supported(struct pci_dev *pd
    return (device_mask & dma_addr_mask) == dma_addr_mask;
    }

    +void pci_resource_to_user(const struct pci_dev *pdev, int bar,
    + const struct resource *rp, resource_size_t *start,
    + resource_size_t *end)
    +{
    + struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller;
    + unsigned long offset;
    +
    + if (rp->flags & IORESOURCE_IO)
    + offset = pbm->io_space.start;
    + else
    + offset = pbm->mem_space.start;
    +
    + *start = rp->start - offset;
    + *end = rp->end - offset;
    +}
    +
    #endif /* !(CONFIG_PCI) */
    --- a/include/asm-sparc64/pci.h
    +++ b/include/asm-sparc64/pci.h
    @@ -200,6 +200,10 @@ static inline int pci_get_legacy_ide_irq
    struct device_node;
    extern struct device_node *pci_device_to_OF_node(struct pci_dev *pdev);

    +#define HAVE_ARCH_PCI_RESOURCE_TO_USER
    +extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
    + const struct resource *rsrc,
    + resource_size_t *start, resource_size_t *end);
    #endif /* __KERNEL__ */

    #endif /* __SPARC64_PCI_H */

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  18. [patch 26/73] NET: Correct two mistaken skb_reset_mac_header() conversions.

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: David Miller

    [NET]: Correct two mistaken skb_reset_mac_header() conversions.

    [ Upstream commit: c6e6ca712b5cc06a662f900c0484d49d7334af64 ]

    This operation helper abstracts:

    skb->mac_header = skb->data;

    but it was done in two more places which were actually:

    skb->mac_header = skb->network_header;

    and those are corrected here.

    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    net/ax25/ax25_in.c | 2 +-
    net/netrom/nr_dev.c | 2 +-
    2 files changed, 2 insertions(+), 2 deletions(-)

    --- a/net/ax25/ax25_in.c
    +++ b/net/ax25/ax25_in.c
    @@ -124,7 +124,7 @@ int ax25_rx_iframe(ax25_cb *ax25, struct
    }

    skb_pull(skb, 1); /* Remove PID */
    - skb_reset_mac_header(skb);
    + skb->mac_header = skb->network_header;
    skb_reset_network_header(skb);
    skb->dev = ax25->ax25_dev->dev;
    skb->pkt_type = PACKET_HOST;
    --- a/net/netrom/nr_dev.c
    +++ b/net/netrom/nr_dev.c
    @@ -56,7 +56,7 @@ int nr_rx_ip(struct sk_buff *skb, struct

    /* Spoof incoming device */
    skb->dev = dev;
    - skb_reset_mac_header(skb);
    + skb->mac_header = skb->network_header;
    skb_reset_network_header(skb);
    skb->pkt_type = PACKET_HOST;


    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  19. [patch 28/73] CASSINI: Fix endianness bug.

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Al Viro

    [ Upstream commit: e5e025401f6e926c1d9dc3f3f2813cf98a2d8708 ]

    Here's proposed fix for RX checksum handling in cassini; it affects
    little-endian working with half-duplex gigabit, but obviously needs
    testing on big-endian too.

    The problem is, we need to convert checksum to fixed-endian *before*
    correcting for (unstripped) FCS. On big-endian it won't matter
    (conversion is no-op), on little-endian it will, but only if FCS is
    not stripped by hardware; i.e. in half-duplex gigabit mode when
    ->crc_size is set.

    cassini.c part is that fix, cassini.h one consists of trivial
    endianness annotations. With that applied the sucker is endian-clean,
    according to sparse.

    Signed-off-by: Al Viro
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    ---
    drivers/net/cassini.c | 8 +++++---
    drivers/net/cassini.h | 18 +++++++++---------
    2 files changed, 14 insertions(+), 12 deletions(-)

    --- a/drivers/net/cassini.c
    +++ b/drivers/net/cassini.c
    @@ -1979,6 +1979,7 @@ static int cas_rx_process_pkt(struct cas
    struct cas_page *page;
    struct sk_buff *skb;
    void *addr, *crcaddr;
    + __sum16 csum;
    char *p;

    hlen = CAS_VAL(RX_COMP2_HDR_SIZE, words[1]);
    @@ -2158,14 +2159,15 @@ end_copy_pkt:
    skb_put(skb, alloclen);
    }

    - i = CAS_VAL(RX_COMP4_TCP_CSUM, words[3]);
    + csum = (__force __sum16)htons(CAS_VAL(RX_COMP4_TCP_CSUM, words[3]));
    if (cp->crc_size) {
    /* checksum includes FCS. strip it out. */
    - i = csum_fold(csum_partial(crcaddr, cp->crc_size, i));
    + csum = csum_fold(csum_partial(crcaddr, cp->crc_size,
    + csum_unfold(csum)));
    if (addr)
    cas_page_unmap(addr);
    }
    - skb->csum = ntohs(i ^ 0xffff);
    + skb->csum = csum_unfold(~csum);
    skb->ip_summed = CHECKSUM_COMPLETE;
    skb->protocol = eth_type_trans(skb, cp->dev);
    return len;
    --- a/drivers/net/cassini.h
    +++ b/drivers/net/cassini.h
    @@ -4122,8 +4122,8 @@ cas_saturn_patch_t cas_saturn_patch[] =
    inserted into
    outgoing frame. */
    struct cas_tx_desc {
    - u64 control;
    - u64 buffer;
    + __le64 control;
    + __le64 buffer;
    };

    /* descriptor ring for free buffers contains page-sized buffers. the index
    @@ -4131,8 +4131,8 @@ struct cas_tx_desc {
    * the completion ring.
    */
    struct cas_rx_desc {
    - u64 index;
    - u64 buffer;
    + __le64 index;
    + __le64 buffer;
    };

    /* received packets are put on the completion ring. */
    @@ -4210,10 +4210,10 @@ struct cas_rx_desc {
    #define RX_INDEX_RELEASE 0x0000000000002000ULL

    struct cas_rx_comp {
    - u64 word1;
    - u64 word2;
    - u64 word3;
    - u64 word4;
    + __le64 word1;
    + __le64 word2;
    + __le64 word3;
    + __le64 word4;
    };

    enum link_state {
    @@ -4252,7 +4252,7 @@ struct cas_init_block {
    struct cas_rx_comp rxcs[N_RX_COMP_RINGS][INIT_BLOCK_RX_COMP];
    struct cas_rx_desc rxds[N_RX_DESC_RINGS][INIT_BLOCK_RX_DESC];
    struct cas_tx_desc txds[N_TX_RINGS][INIT_BLOCK_TX];
    - u64 tx_compwb;
    + __le64 tx_compwb;
    };

    /* tiny buffers to deal with target abort issue. we allocate a bit

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  20. [patch 23/73] IPV4 ROUTE: ip_rt_dump() is unecessary slow

    2.6.23-stable review patch. If anyone has any objections, please let us know.
    ------------------
    From: Eric Dumazet

    [IPV4] ROUTE: ip_rt_dump() is unecessary slow

    [ Upstream commit: d8c9283089287341c85a0a69de32c2287a990e71 ]

    I noticed "ip route list cache x.y.z.t" can be *very* slow.

    While strace-ing -T it I also noticed that first part of route cache
    is fetched quite fast :

    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
    GXm\0\0\2 \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3772 <0.000047>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\
    202GXm\0\0\2 \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3736 <0.000042>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\
    202GXm\0\0\2 \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3740 <0.000055>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\
    202GXm\0\0\2 \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3712 <0.000043>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\
    202GXm\0\0\2 \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3732 <0.000053>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
    GXm\0\0\2 \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3708 <0.000052>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202
    GXm\0\0\2 \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3680 <0.000041>

    while the part at the end of the table is more expensive:

    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\202GXm\0\0\2 \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3656 <0.003857>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\204\0\0\0\30\0\2\0\254i\202GXm\0\0\2 \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3772 <0.003891>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2 \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3712 <0.003765>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2 \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3700 <0.003879>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2 \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3676 <0.003797>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"p\0\0\0\30\0\2\0\254i\202GXm\0\0\2 \0\376\0\0\2\0\2\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3724 <0.003856>
    recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\234\0\0\0\30\0\2\0\254i\202GXm\0\0\2 \0\376\0\0\1\0\2"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3736 <0.003848>

    The following patch corrects this performance/latency problem,
    removing quadratic behavior.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

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

    --- a/net/ipv4/route.c
    +++ b/net/ipv4/route.c
    @@ -2648,11 +2648,10 @@ int ip_rt_dump(struct sk_buff *skb, str
    int idx, s_idx;

    s_h = cb->args[0];
    + if (s_h < 0)
    + s_h = 0;
    s_idx = idx = cb->args[1];
    - for (h = 0; h <= rt_hash_mask; h++) {
    - if (h < s_h) continue;
    - if (h > s_h)
    - s_idx = 0;
    + for (h = s_h; h <= rt_hash_mask; h++) {
    rcu_read_lock_bh();
    for (rt = rcu_dereference(rt_hash_table[h].chain), idx = 0; rt;
    rt = rcu_dereference(rt->u.dst.rt_next), idx++) {
    @@ -2669,6 +2668,7 @@ int ip_rt_dump(struct sk_buff *skb, str
    dst_release(xchg(&skb->dst, NULL));
    }
    rcu_read_unlock_bh();
    + s_idx = 0;
    }

    done:

    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread
Page 1 of 4 1 2 3 ... LastLast