Skip to content
Snippets Groups Projects
  1. Jun 07, 2012
  2. Jun 06, 2012
  3. Jun 05, 2012
  4. Jun 04, 2012
    • David S. Miller's avatar
    • Eric Dumazet's avatar
      drop_monitor: dont sleep in atomic context · bec4596b
      Eric Dumazet authored
      
      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: default avatarEric Dumazet <edumazet@google.com>
      Cc: Neil Horman <nhorman@tuxdriver.com>
      Reviewed-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bec4596b
    • Joe Perches's avatar
      can: cc770: Fix likely misuse of | for & · dc605dbd
      Joe Perches authored
      
      Using | with a constant is always true.
      Likely this should have be &.
      
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      dc605dbd
    • AnilKumar Ch's avatar
      can: c_can: fix race condition in c_can_open() · f461f27a
      AnilKumar Ch authored
      
      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: default avatarAnilKumar Ch <anilkumar@ti.com>
      Acked-by: default avatarWolfgang Grandegger <wg@grandegger.com>
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      f461f27a