1. 30 Mar, 2009 1 commit
    • Alexey Dobriyan's avatar
      proc 2/2: remove struct proc_dir_entry::owner · 99b76233
      Alexey Dobriyan authored
      Setting ->owner as done currently (pde->owner = THIS_MODULE) is racy
      as correctly noted at bug #12454. Someone can lookup entry with NULL
      ->owner, thus not pinning enything, and release it later resulting
      in module refcount underflow.
      
      We can keep ->owner and supply it at registration time like ->proc_fops
      and ->data.
      
      But this leaves ->owner as easy-manipulative field (just one C assignment)
      and somebody will forget to unpin previous/pin current module when
      switching ->owner. ->proc_fops is declared as "const" which should give
      some thoughts.
      
      ->read_proc/->write_proc were just fixed to not require ->owner for
      protection.
      
      rmmod'ed directories will be empty and return "." and ".." -- no harm.
      And directories with tricky enough readdir and lookup shouldn't be modular.
      We definitely don't want such modular code.
      
      Removing ->owner will also make PDE smaller.
      
      So, let's nuke it.
      
      Kudos to Jeff Layton for reminding about this, let's say, oversight.
      
      http://bugzilla.kernel.org/show_bug.cgi?id=12454
      
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      99b76233
  2. 15 Jan, 2009 1 commit
    • Oliver Hartkopp's avatar
      can: fix slowpath issue in hrtimer callback function · c53a6ee8
      Oliver Hartkopp authored
      
      Due to the loopback functionality in can_send() we can not invoke it
      from hardirq context which was done inside the
      bcm_tx_timeout_handler() hrtimer callback:
      
      [  700.361154]  [<c012228c>] warn_slowpath+0x80/0xb6
      [  700.361163]  [<c013d559>] valid_state+0x125/0x136
      [  700.361171]  [<c013d858>] mark_lock+0x18e/0x332
      [  700.361180]  [<c013e300>] __lock_acquire+0x12e/0xb1e
      [  700.361189]  [<f8ab5915>] bcm_tx_timeout_handler+0x0/0xbc [can_bcm]
      [  700.361198]  [<c031e20a>] dev_queue_xmit+0x191/0x479
      [  700.361206]  [<c01262a7>] __local_bh_disable+0x2b/0x64
      [  700.361213]  [<c031e20a>] dev_queue_xmit+0x191/0x479
      [  700.361225]  [<f8aa69a1>] can_send+0xd7/0x11a [can]
      [  700.361235]  [<f8ab522b>] bcm_can_tx+0x9d/0xd9 [can_bcm]
      [  700.361245]  [<f8ab597f>] bcm_tx_timeout_handler+0x6a/0xbc [can_bcm]
      [  700.361255]  [<f8ab5915>] bcm_tx_timeout_handler+0x0/0xbc [can_bcm]
      [  700.361263]  [<c0134143>] __run_hrtimer+0x5a/0x86
      [  700.361273]  [<f8ab5915>] bcm_tx_timeout_handler+0x0/0xbc [can_bcm]
      [  700.361282]  [<c0134a50>] hrtimer_interrupt+0xb9/0x110
      
      This patch moves the rest of the functionality from the hrtimer
      callback to the already existing tasklet to fix this slowpath problem.
      Signed-off-by: default avatarOliver Hartkopp <oliver@hartkopp.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c53a6ee8
  3. 06 Jan, 2009 1 commit
  4. 05 Jan, 2009 1 commit
  5. 03 Dec, 2008 1 commit
    • Oliver Hartkopp's avatar
      can: Fix CAN_(EFF|RTR)_FLAG handling in can_filter · d253eee2
      Oliver Hartkopp authored
      
      Due to a wrong safety check in af_can.c it was not possible to filter
      for SFF frames with a specific CAN identifier without getting the
      same selected CAN identifier from a received EFF frame also.
      
      This fix has a minimum (but user visible) impact on the CAN filter
      API and therefore the CAN version is set to a new date.
      
      Indeed the 'old' API is still working as-is. But when now setting
      CAN_(EFF|RTR)_FLAG in can_filter.can_mask you might get less traffic
      than before - but still the stuff that you expected to get for your
      defined filter ...
      
      Thanks to Kurt Van Dijck for pointing at this issue and for the review.
      Signed-off-by: default avatarOliver Hartkopp <oliver@hartkopp.net>
      Acked-by: default avatarKurt Van Dijck <kurt.van.dijck@eia.be>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d253eee2
  6. 20 Jul, 2008 1 commit
  7. 06 Jul, 2008 1 commit
  8. 03 May, 2008 1 commit
  9. 16 Apr, 2008 1 commit
  10. 25 Mar, 2008 1 commit
  11. 28 Jan, 2008 1 commit