]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 8 Mar 2009 17:23:05 +0000 (10:23 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 8 Mar 2009 17:23:05 +0000 (10:23 -0700)
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
  dmatest: fix use after free in dmatest_exit
  ipu_idmac: fix spinlock type
  iop-adma, mv_xor: fix mem leak on self-test setup failure
  fsldma: fix off by one in dma_halt
  I/OAT: fail self-test if callback test reaches timeout
  I/OAT: update driver version and copyright dates
  I/OAT: list usage cleanup
  I/OAT: set tcp_dma_copybreak to 256k for I/OAT ver.3
  I/OAT: cancel watchdog before dma remove
  I/OAT: fail initialization on zero channels detection
  I/OAT: do not set DCACTRL_CMPL_WRITE_ENABLE for I/OAT ver.3
  I/OAT: add verification for proper APICID_TAG_MAP setting by BIOS
  dmaengine: update kerneldoc

1  2 
drivers/dma/iop-adma.c
drivers/dma/mv_xor.c
include/linux/dmaengine.h

diff --combined drivers/dma/iop-adma.c
index 647374acba94a7c526d04236af5a855f81b7258c,4131ab8e5032deec913d25228154fd91b0173ab9..16adbe61cfb2cd60efd1a01246be3f9c9f4eac43
@@@ -928,19 -928,19 +928,19 @@@ iop_adma_xor_zero_sum_self_test(struct 
  
        for (src_idx = 0; src_idx < IOP_ADMA_NUM_SRC_TEST; src_idx++) {
                xor_srcs[src_idx] = alloc_page(GFP_KERNEL);
-               if (!xor_srcs[src_idx])
-                       while (src_idx--) {
+               if (!xor_srcs[src_idx]) {
+                       while (src_idx--)
                                __free_page(xor_srcs[src_idx]);
-                               return -ENOMEM;
-                       }
+                       return -ENOMEM;
+               }
        }
  
        dest = alloc_page(GFP_KERNEL);
-       if (!dest)
-               while (src_idx--) {
+       if (!dest) {
+               while (src_idx--)
                        __free_page(xor_srcs[src_idx]);
-                       return -ENOMEM;
-               }
+               return -ENOMEM;
+       }
  
        /* Fill in src buffers */
        for (src_idx = 0; src_idx < IOP_ADMA_NUM_SRC_TEST; src_idx++) {
@@@ -1401,7 -1401,7 +1401,7 @@@ MODULE_ALIAS("platform:iop-adma")
  
  static struct platform_driver iop_adma_driver = {
        .probe          = iop_adma_probe,
 -      .remove         = iop_adma_remove,
 +      .remove         = __devexit_p(iop_adma_remove),
        .driver         = {
                .owner  = THIS_MODULE,
                .name   = "iop-adma",
diff --combined drivers/dma/mv_xor.c
index 5d5d5b31867fc9e28dd70696e52ad00fa68c997c,2a4e3e30a04625a5c9241f0d8b82018ed95916da..cb7f26fb9f188ce594081069bd61c6e99c957930
@@@ -1019,19 -1019,19 +1019,19 @@@ mv_xor_xor_self_test(struct mv_xor_devi
  
        for (src_idx = 0; src_idx < MV_XOR_NUM_SRC_TEST; src_idx++) {
                xor_srcs[src_idx] = alloc_page(GFP_KERNEL);
-               if (!xor_srcs[src_idx])
-                       while (src_idx--) {
+               if (!xor_srcs[src_idx]) {
+                       while (src_idx--)
                                __free_page(xor_srcs[src_idx]);
-                               return -ENOMEM;
-                       }
+                       return -ENOMEM;
+               }
        }
  
        dest = alloc_page(GFP_KERNEL);
-       if (!dest)
-               while (src_idx--) {
+       if (!dest) {
+               while (src_idx--)
                        __free_page(xor_srcs[src_idx]);
-                       return -ENOMEM;
-               }
+               return -ENOMEM;
+       }
  
        /* Fill in src buffers */
        for (src_idx = 0; src_idx < MV_XOR_NUM_SRC_TEST; src_idx++) {
@@@ -1287,7 -1287,7 +1287,7 @@@ mv_xor_conf_mbus_windows(struct mv_xor_
  
  static struct platform_driver mv_xor_driver = {
        .probe          = mv_xor_probe,
 -      .remove         = mv_xor_remove,
 +      .remove         = __devexit_p(mv_xor_remove),
        .driver         = {
                .owner  = THIS_MODULE,
                .name   = MV_XOR_NAME,
index f0413845f20ee75481543cb97c570d6dbda142b4,087e79acf8c7608eaa56df78285f6bb732777ece..1956c8d46d326ea98c2286a6f3f47e8e428518a1
@@@ -97,7 -97,6 +97,6 @@@ typedef struct { DECLARE_BITMAP(bits, D
  
  /**
   * struct dma_chan_percpu - the per-CPU part of struct dma_chan
-  * @refcount: local_t used for open-coded "bigref" counting
   * @memcpy_count: transaction counter
   * @bytes_transferred: byte counter
   */
@@@ -114,14 -113,10 +113,11 @@@ struct dma_chan_percpu 
   * @cookie: last cookie value returned to client
   * @chan_id: channel ID for sysfs
   * @dev: class device for sysfs
-  * @refcount: kref, used in "bigref" slow-mode
-  * @slow_ref: indicates that the DMA channel is free
-  * @rcu: the DMA channel's RCU head
   * @device_node: used to add this to the device chan list
   * @local: per-cpu pointer to a struct dma_chan_percpu
   * @client-count: how many clients are using this channel
   * @table_count: number of appearances in the mem-to-mem allocation table
 + * @private: private data for certain client-channel associations
   */
  struct dma_chan {
        struct dma_device *device;
        struct dma_chan_percpu *local;
        int client_count;
        int table_count;
 +      void *private;
  };
  
  /**
@@@ -213,8 -207,6 +209,6 @@@ struct dma_async_tx_descriptor 
   * @global_node: list_head for global dma_device_list
   * @cap_mask: one or more dma_capability flags
   * @max_xor: maximum number of xor sources, 0 if no capability
-  * @refcount: reference count
-  * @done: IO completion struct
   * @dev_id: unique device ID
   * @dev: struct device reference for dma mapping api
   * @device_alloc_chan_resources: allocate resources and return the
   * @device_prep_dma_interrupt: prepares an end of chain interrupt operation
   * @device_prep_slave_sg: prepares a slave dma operation
   * @device_terminate_all: terminate all pending operations
+  * @device_is_tx_complete: poll for transaction completion
   * @device_issue_pending: push pending transactions to hardware
   */
  struct dma_device {