1. 08 6月, 2012 1 次提交
  2. 07 6月, 2012 9 次提交
  3. 06 6月, 2012 6 次提交
  4. 05 6月, 2012 19 次提交
  5. 04 6月, 2012 5 次提交
    • D
    • E
      drop_monitor: dont sleep in atomic context · bec4596b
      Eric Dumazet 提交于
      drop_monitor calls several sleeping functions while in atomic context.
      
       BUG: sleeping function called from invalid context at mm/slub.c:943
       in_atomic(): 1, irqs_disabled(): 0, pid: 2103, name: kworker/0:2
       Pid: 2103, comm: kworker/0:2 Not tainted 3.5.0-rc1+ #55
       Call Trace:
        [<ffffffff810697ca>] __might_sleep+0xca/0xf0
        [<ffffffff811345a3>] kmem_cache_alloc_node+0x1b3/0x1c0
        [<ffffffff8105578c>] ? queue_delayed_work_on+0x11c/0x130
        [<ffffffff815343fb>] __alloc_skb+0x4b/0x230
        [<ffffffffa00b0360>] ? reset_per_cpu_data+0x160/0x160 [drop_monitor]
        [<ffffffffa00b022f>] reset_per_cpu_data+0x2f/0x160 [drop_monitor]
        [<ffffffffa00b03ab>] send_dm_alert+0x4b/0xb0 [drop_monitor]
        [<ffffffff810568e0>] process_one_work+0x130/0x4c0
        [<ffffffff81058249>] worker_thread+0x159/0x360
        [<ffffffff810580f0>] ? manage_workers.isra.27+0x240/0x240
        [<ffffffff8105d403>] kthread+0x93/0xa0
        [<ffffffff816be6d4>] kernel_thread_helper+0x4/0x10
        [<ffffffff8105d370>] ? kthread_freezable_should_stop+0x80/0x80
        [<ffffffff816be6d0>] ? gs_change+0xb/0xb
      
      Rework the logic to call the sleeping functions in right context.
      
      Use standard timer/workqueue api to let system chose any cpu to perform
      the allocation and netlink send.
      
      Also avoid a loop if reset_per_cpu_data() cannot allocate memory :
      use mod_timer() to wait 1/10 second before next try.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Neil Horman <nhorman@tuxdriver.com>
      Reviewed-by: NNeil Horman <nhorman@tuxdriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bec4596b
    • J
      can: cc770: Fix likely misuse of | for & · dc605dbd
      Joe Perches 提交于
      Using | with a constant is always true.
      Likely this should have be &.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      dc605dbd
    • A
      can: c_can: fix race condition in c_can_open() · f461f27a
      AnilKumar Ch 提交于
      Fix the issue of C_CAN interrupts getting disabled forever when canconfig
      utility is used multiple times. According to NAPI usage we disable all
      the hardware interrupts in ISR and re-enable them in poll(). Current
      implementation calls napi_enable() after hardware interrupts are enabled.
      If we get any interrupts between these two steps then we do not process
      those interrupts because napi is not enabled. Mostly these interrupts
      come because of STATUS is not 0x7 or ERROR interrupts. If napi_enable()
      happens before HW interrupts enabled then c_can_poll() function will be
      called eventual re-enabling.
      
      This patch moves the napi_enable() call before interrupts enabled.
      
      Cc: stable@kernel.org # 2.6.39+
      Signed-off-by: NAnilKumar Ch <anilkumar@ti.com>
      Acked-by: NWolfgang Grandegger <wg@grandegger.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      f461f27a
    • A
      can: c_can: fix an interrupt thrash issue with c_can driver · 148c87c8
      AnilKumar Ch 提交于
      This patch fixes an interrupt thrash issue with c_can driver.
      
      In c_can_isr() function interrupts are disabled and enabled only in
      c_can_poll() function. c_can_isr() & c_can_poll() both read the
      irqstatus flag. However, irqstatus is always read as 0 in c_can_poll()
      because all C_CAN interrupts are disabled in c_can_isr(). This causes
      all interrupts to be re-enabled in c_can_poll() which in turn causes
      another interrupt since the event is not really handled. This keeps
      happening causing a flood of interrupts.
      
      To fix this, read the irqstatus register in isr and use the same cached
      value in the poll function.
      
      Cc: stable@kernel.org # 2.6.39+
      Signed-off-by: NAnilKumar Ch <anilkumar@ti.com>
      Acked-by: NWolfgang Grandegger <wg@grandegger.com>
      Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
      148c87c8