]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge tag 'staging-3.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 14 Jan 2013 17:08:38 +0000 (09:08 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 14 Jan 2013 17:08:38 +0000 (09:08 -0800)
Pull staging fixes from Greg Kroah-Hartman:
 "Here are a number of small fixes to staging drivers for your 3.8-rc3
  tree.

  Well, the omapdrm fixes aren't really "small" but they were waiting on
  a number of other drm patches to go in through the drm tree, and got
  delayed by my vacation over the holidays.  They are totally
  self-contained, everyone involved have acked them, and they fix issues
  that people have been having with the driver.

  Other than that one, it's a bunch of tiny bugfixes for a number of
  reported issues.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
* tag 'staging-3.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (36 commits)
  staging: zram: fix invalid memory references during disk write
  staging: tidspbridge: use prepare/unprepare on dsp clocks
  staging: tidspbridge: Fix build breakage due to splitting CM functions.
  staging: comedi: comedi_test: fix race when cancelling command
  staging: comedi: Kconfig: COMEDI_NI_AT_A2150 should select COMEDI_FC
  staging: comedi: prevent auto-unconfig of manually configured devices
  staging: comedi: fix minimum AO period for NI 625x and NI 628x
  staging: vme_pio2: fix oops on module unloading
  staging: speakup: avoid out-of-range access in synth_add()
  staging: speakup: avoid out-of-range access in synth_init()
  staging: rtl8192e: Fix failure to check pci_map_single()
  staging: rtl8187se: Fix failure to check pci_map_single()
  staging: drm/imx: fix double free bug in error path
  staging: drm/imx: several bug fixes
  staging: drm/imx: check return value of ipu_reset()
  staging: drm/omap: fix flags in dma buf exporting
  staging: drm/omap: use omapdss low level API
  staging/fwserial: Update TODO file per reviewer comments
  staging/fwserial: Limit tx/rx to 1394-2008 spec maximum
  staging/fwserial: Refine Kconfig help text
  ...

1  2 
drivers/iio/adc/ad7266.c
drivers/iio/adc/at91_adc.c
drivers/iio/adc/max1363.c
drivers/iio/dac/ad5380.c
drivers/iio/dac/ad5446.c
drivers/iio/dac/ad5504.c
drivers/iio/dac/ad5624r_spi.c
drivers/iio/dac/ad5686.c
drivers/iio/dac/ad5791.c
drivers/iio/frequency/adf4350.c
drivers/staging/omapdrm/omap_gem_dmabuf.c

diff --combined drivers/iio/adc/ad7266.c
index 4a5f639bc68492e6d912db45b5460d050b60cad3,e36107dc30b9a96942f6acc16d70fb62a4083fcc..bbad9b94cd75770b136499728497ff73ce4067d9
@@@ -367,7 -367,7 +367,7 @@@ static const struct ad7266_chan_info ad
        },
  };
  
 -static void __devinit ad7266_init_channels(struct iio_dev *indio_dev)
 +static void ad7266_init_channels(struct iio_dev *indio_dev)
  {
        struct ad7266_state *st = iio_priv(indio_dev);
        bool is_differential, is_signed;
@@@ -391,7 -391,7 +391,7 @@@ static const char * const ad7266_gpio_l
        "AD0", "AD1", "AD2",
  };
  
 -static int __devinit ad7266_probe(struct spi_device *spi)
 +static int ad7266_probe(struct spi_device *spi)
  {
        struct ad7266_platform_data *pdata = spi->dev.platform_data;
        struct iio_dev *indio_dev;
                if (ret)
                        goto error_put_reg;
  
-               st->vref_uv = regulator_get_voltage(st->reg);
+               ret = regulator_get_voltage(st->reg);
+               if (ret < 0)
+                       goto error_disable_reg;
+               st->vref_uv = ret;
        } else {
                /* Use internal reference */
                st->vref_uv = 2500000;
@@@ -494,7 -498,7 +498,7 @@@ error_put_reg
        return ret;
  }
  
 -static int __devexit ad7266_remove(struct spi_device *spi)
 +static int ad7266_remove(struct spi_device *spi)
  {
        struct iio_dev *indio_dev = spi_get_drvdata(spi);
        struct ad7266_state *st = iio_priv(indio_dev);
@@@ -525,7 -529,7 +529,7 @@@ static struct spi_driver ad7266_driver 
                .owner  = THIS_MODULE,
        },
        .probe          = ad7266_probe,
 -      .remove         = __devexit_p(ad7266_remove),
 +      .remove         = ad7266_remove,
        .id_table       = ad7266_id,
  };
  module_spi_driver(ad7266_driver);
index 04b013561f0fc874fe7a2df1b0409b2aa3c9d4df,315bed1f401fe1ce052116c1aa3269e6b3f8509c..a526c0e3aaa84be092d25789d3ccaffd0d056204
@@@ -80,7 -80,7 +80,7 @@@ static irqreturn_t at91_adc_trigger_han
                *timestamp = pf->timestamp;
        }
  
-       iio_push_to_buffers(indio_dev, (u8 *)st->buffer);
+       iio_push_to_buffers(idev, (u8 *)st->buffer);
  
        iio_trigger_notify_done(idev->trig);
  
@@@ -514,7 -514,7 +514,7 @@@ static const struct iio_info at91_adc_i
        .read_raw = &at91_adc_read_raw,
  };
  
 -static int __devinit at91_adc_probe(struct platform_device *pdev)
 +static int at91_adc_probe(struct platform_device *pdev)
  {
        unsigned int prsc, mstrclk, ticks, adc_clk;
        int ret;
@@@ -678,7 -678,7 +678,7 @@@ error_ret
        return ret;
  }
  
 -static int __devexit at91_adc_remove(struct platform_device *pdev)
 +static int at91_adc_remove(struct platform_device *pdev)
  {
        struct iio_dev *idev = platform_get_drvdata(pdev);
        struct at91_adc_state *st = iio_priv(idev);
@@@ -702,7 -702,7 +702,7 @@@ MODULE_DEVICE_TABLE(of, at91_adc_dt_ids
  
  static struct platform_driver at91_adc_driver = {
        .probe = at91_adc_probe,
 -      .remove = __devexit_p(at91_adc_remove),
 +      .remove = at91_adc_remove,
        .driver = {
                   .name = "at91_adc",
                   .of_match_table = of_match_ptr(at91_adc_dt_ids),
index b5669be6f396f53122b8f704c63a8e7e32e962d8,31f3485303d062217d1839d0a1fddb4097671b80..03b25b3dc71eb95703d2131230e2f11cb2dae03c
@@@ -1402,7 -1402,7 +1402,7 @@@ static int max1363_initial_setup(struc
        return max1363_set_scan_mode(st);
  }
  
 -static int __devinit max1363_alloc_scan_masks(struct iio_dev *indio_dev)
 +static int max1363_alloc_scan_masks(struct iio_dev *indio_dev)
  {
        struct max1363_state *st = iio_priv(indio_dev);
        unsigned long *masks;
@@@ -1525,8 -1525,8 +1525,8 @@@ static void max1363_buffer_cleanup(stru
        iio_kfifo_free(indio_dev->buffer);
  }
  
 -static int __devinit max1363_probe(struct i2c_client *client,
 -                                 const struct i2c_device_id *id)
 +static int max1363_probe(struct i2c_client *client,
 +                       const struct i2c_device_id *id)
  {
        int ret;
        struct max1363_state *st;
  
        return 0;
  error_free_irq:
-       free_irq(st->client->irq, indio_dev);
+       if (client->irq)
+               free_irq(st->client->irq, indio_dev);
  error_uninit_buffer:
        iio_buffer_unregister(indio_dev);
  error_cleanup_buffer:
        max1363_buffer_cleanup(indio_dev);
  error_free_available_scan_masks:
        kfree(indio_dev->available_scan_masks);
- error_unregister_map:
-       iio_map_array_unregister(indio_dev, client->dev.platform_data);
  error_disable_reg:
        regulator_disable(st->reg);
  error_put_reg:
        regulator_put(st->reg);
+ error_unregister_map:
+       iio_map_array_unregister(indio_dev, client->dev.platform_data);
  error_free_device:
        iio_device_free(indio_dev);
  error_out:
        return ret;
  }
  
 -static int __devexit max1363_remove(struct i2c_client *client)
 +static int max1363_remove(struct i2c_client *client)
  {
        struct iio_dev *indio_dev = i2c_get_clientdata(client);
        struct max1363_state *st = iio_priv(indio_dev);
        iio_buffer_unregister(indio_dev);
        max1363_buffer_cleanup(indio_dev);
        kfree(indio_dev->available_scan_masks);
-       if (!IS_ERR(st->reg)) {
-               regulator_disable(st->reg);
-               regulator_put(st->reg);
-       }
+       regulator_disable(st->reg);
+       regulator_put(st->reg);
        iio_map_array_unregister(indio_dev, client->dev.platform_data);
        iio_device_free(indio_dev);
  
@@@ -1690,7 -1689,7 +1689,7 @@@ static struct i2c_driver max1363_drive
                .name = "max1363",
        },
        .probe = max1363_probe,
 -      .remove = __devexit_p(max1363_remove),
 +      .remove = max1363_remove,
        .id_table = max1363_id,
  };
  module_i2c_driver(max1363_driver);
diff --combined drivers/iio/dac/ad5380.c
index 6c7898c765d9599cb5a531a709c45d9a6a4944b0,4aca1895ce52cf735fe9691ab0467947cb5218da..483fc379a2da9ca64a29fb13313b16f3d76d8b43
@@@ -338,7 -338,7 +338,7 @@@ static const struct ad5380_chip_info ad
        },
  };
  
 -static int __devinit ad5380_alloc_channels(struct iio_dev *indio_dev)
 +static int ad5380_alloc_channels(struct iio_dev *indio_dev)
  {
        struct ad5380_state *st = iio_priv(indio_dev);
        struct iio_chan_spec *channels;
        return 0;
  }
  
 -static int __devinit ad5380_probe(struct device *dev, struct regmap *regmap,
 -      enum ad5380_type type, const char *name)
 +static int ad5380_probe(struct device *dev, struct regmap *regmap,
 +                      enum ad5380_type type, const char *name)
  {
        struct iio_dev *indio_dev;
        struct ad5380_state *st;
                        goto error_free_reg;
                }
  
-               st->vref = regulator_get_voltage(st->vref_reg);
+               ret = regulator_get_voltage(st->vref_reg);
+               if (ret < 0)
+                       goto error_disable_reg;
+               st->vref = ret;
        } else {
                st->vref = st->chip_info->int_vref;
                ctrl |= AD5380_CTRL_INT_VREF_EN;
@@@ -441,7 -445,7 +445,7 @@@ error_out
        return ret;
  }
  
 -static int __devexit ad5380_remove(struct device *dev)
 +static int ad5380_remove(struct device *dev)
  {
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
        struct ad5380_state *st = iio_priv(indio_dev);
@@@ -478,7 -482,7 +482,7 @@@ static const struct regmap_config ad538
  
  #if IS_ENABLED(CONFIG_SPI_MASTER)
  
 -static int __devinit ad5380_spi_probe(struct spi_device *spi)
 +static int ad5380_spi_probe(struct spi_device *spi)
  {
        const struct spi_device_id *id = spi_get_device_id(spi);
        struct regmap *regmap;
        return ad5380_probe(&spi->dev, regmap, id->driver_data, id->name);
  }
  
 -static int __devexit ad5380_spi_remove(struct spi_device *spi)
 +static int ad5380_spi_remove(struct spi_device *spi)
  {
        return ad5380_remove(&spi->dev);
  }
@@@ -523,7 -527,7 +527,7 @@@ static struct spi_driver ad5380_spi_dri
                   .owner = THIS_MODULE,
        },
        .probe = ad5380_spi_probe,
 -      .remove = __devexit_p(ad5380_spi_remove),
 +      .remove = ad5380_spi_remove,
        .id_table = ad5380_spi_ids,
  };
  
@@@ -552,8 -556,8 +556,8 @@@ static inline void ad5380_spi_unregiste
  
  #if IS_ENABLED(CONFIG_I2C)
  
 -static int __devinit ad5380_i2c_probe(struct i2c_client *i2c,
 -      const struct i2c_device_id *id)
 +static int ad5380_i2c_probe(struct i2c_client *i2c,
 +                          const struct i2c_device_id *id)
  {
        struct regmap *regmap;
  
        return ad5380_probe(&i2c->dev, regmap, id->driver_data, id->name);
  }
  
 -static int __devexit ad5380_i2c_remove(struct i2c_client *i2c)
 +static int ad5380_i2c_remove(struct i2c_client *i2c)
  {
        return ad5380_remove(&i2c->dev);
  }
@@@ -597,7 -601,7 +601,7 @@@ static struct i2c_driver ad5380_i2c_dri
                   .owner = THIS_MODULE,
        },
        .probe = ad5380_i2c_probe,
 -      .remove = __devexit_p(ad5380_i2c_remove),
 +      .remove = ad5380_i2c_remove,
        .id_table = ad5380_i2c_ids,
  };
  
diff --combined drivers/iio/dac/ad5446.c
index 29f653dab2f7bf7270f086737222cb48d5ed76e4,ecb639540dff922686b0aa6571e7232a1a7ef61e..f5583aedfb597cf927e3e39969b80e5e0184085e
@@@ -212,8 -212,8 +212,8 @@@ static const struct iio_info ad5446_inf
        .driver_module = THIS_MODULE,
  };
  
 -static int __devinit ad5446_probe(struct device *dev, const char *name,
 -      const struct ad5446_chip_info *chip_info)
 +static int ad5446_probe(struct device *dev, const char *name,
 +                      const struct ad5446_chip_info *chip_info)
  {
        struct ad5446_state *st;
        struct iio_dev *indio_dev;
                if (ret)
                        goto error_put_reg;
  
-               voltage_uv = regulator_get_voltage(reg);
+               ret = regulator_get_voltage(reg);
+               if (ret < 0)
+                       goto error_disable_reg;
+               voltage_uv = ret;
        }
  
        indio_dev = iio_device_alloc(sizeof(*st));
@@@ -461,7 -465,7 +465,7 @@@ static const struct spi_device_id ad544
  };
  MODULE_DEVICE_TABLE(spi, ad5446_spi_ids);
  
 -static int __devinit ad5446_spi_probe(struct spi_device *spi)
 +static int ad5446_spi_probe(struct spi_device *spi)
  {
        const struct spi_device_id *id = spi_get_device_id(spi);
  
                &ad5446_spi_chip_info[id->driver_data]);
  }
  
 -static int __devexit ad5446_spi_remove(struct spi_device *spi)
 +static int ad5446_spi_remove(struct spi_device *spi)
  {
        return ad5446_remove(&spi->dev);
  }
@@@ -480,7 -484,7 +484,7 @@@ static struct spi_driver ad5446_spi_dri
                .owner  = THIS_MODULE,
        },
        .probe          = ad5446_spi_probe,
 -      .remove         = __devexit_p(ad5446_spi_remove),
 +      .remove         = ad5446_spi_remove,
        .id_table       = ad5446_spi_ids,
  };
  
@@@ -539,14 -543,14 +543,14 @@@ static const struct ad5446_chip_info ad
        },
  };
  
 -static int __devinit ad5446_i2c_probe(struct i2c_client *i2c,
 -      const struct i2c_device_id *id)
 +static int ad5446_i2c_probe(struct i2c_client *i2c,
 +                          const struct i2c_device_id *id)
  {
        return ad5446_probe(&i2c->dev, id->name,
                &ad5446_i2c_chip_info[id->driver_data]);
  }
  
 -static int __devexit ad5446_i2c_remove(struct i2c_client *i2c)
 +static int ad5446_i2c_remove(struct i2c_client *i2c)
  {
        return ad5446_remove(&i2c->dev);
  }
@@@ -568,7 -572,7 +572,7 @@@ static struct i2c_driver ad5446_i2c_dri
                   .owner = THIS_MODULE,
        },
        .probe = ad5446_i2c_probe,
 -      .remove = __devexit_p(ad5446_i2c_remove),
 +      .remove = ad5446_i2c_remove,
        .id_table = ad5446_i2c_ids,
  };
  
diff --combined drivers/iio/dac/ad5504.c
index b2a31a0468eddc1d689852126877ce84842bd980,7f7c026b9d8a8eb58a63d369b8441ac57a152389..0661829f27737ed4f70e1a29137c6c8a18169457
@@@ -277,7 -277,7 +277,7 @@@ static const struct iio_chan_spec ad550
        AD5504_CHANNEL(3),
  };
  
 -static int __devinit ad5504_probe(struct spi_device *spi)
 +static int ad5504_probe(struct spi_device *spi)
  {
        struct ad5504_platform_data *pdata = spi->dev.platform_data;
        struct iio_dev *indio_dev;
                if (ret)
                        goto error_put_reg;
  
-               voltage_uv = regulator_get_voltage(reg);
+               ret = regulator_get_voltage(reg);
+               if (ret < 0)
+                       goto error_disable_reg;
+               voltage_uv = ret;
        }
  
        spi_set_drvdata(spi, indio_dev);
@@@ -352,7 -356,7 +356,7 @@@ error_ret
        return ret;
  }
  
 -static int __devexit ad5504_remove(struct spi_device *spi)
 +static int ad5504_remove(struct spi_device *spi)
  {
        struct iio_dev *indio_dev = spi_get_drvdata(spi);
        struct ad5504_state *st = iio_priv(indio_dev);
@@@ -383,7 -387,7 +387,7 @@@ static struct spi_driver ad5504_driver 
                   .owner = THIS_MODULE,
                   },
        .probe = ad5504_probe,
 -      .remove = __devexit_p(ad5504_remove),
 +      .remove = ad5504_remove,
        .id_table = ad5504_id,
  };
  module_spi_driver(ad5504_driver);
index e9947969f9fefce62047448e09e8ae4203bb5818,14ea3dbf490222b4582496a0a93f232a6cb7cc25..f6e116627b714e044569c1ef5e85fff59dfc5c20
@@@ -220,7 -220,7 +220,7 @@@ static const struct ad5624r_chip_info a
        },
  };
  
 -static int __devinit ad5624r_probe(struct spi_device *spi)
 +static int ad5624r_probe(struct spi_device *spi)
  {
        struct ad5624r_state *st;
        struct iio_dev *indio_dev;
                if (ret)
                        goto error_put_reg;
  
-               voltage_uv = regulator_get_voltage(st->reg);
+               ret = regulator_get_voltage(st->reg);
+               if (ret < 0)
+                       goto error_disable_reg;
+               voltage_uv = ret;
        }
  
        spi_set_drvdata(spi, indio_dev);
@@@ -282,7 -286,7 +286,7 @@@ error_ret
        return ret;
  }
  
 -static int __devexit ad5624r_remove(struct spi_device *spi)
 +static int ad5624r_remove(struct spi_device *spi)
  {
        struct iio_dev *indio_dev = spi_get_drvdata(spi);
        struct ad5624r_state *st = iio_priv(indio_dev);
@@@ -314,7 -318,7 +318,7 @@@ static struct spi_driver ad5624r_drive
                   .owner = THIS_MODULE,
                   },
        .probe = ad5624r_probe,
 -      .remove = __devexit_p(ad5624r_remove),
 +      .remove = ad5624r_remove,
        .id_table = ad5624r_id,
  };
  module_spi_driver(ad5624r_driver);
diff --combined drivers/iio/dac/ad5686.c
index 36e51382ae528116201f67cb2cbd1d7b1372261a,01eb1d0e4e4162e8fb7a7f09abd642e8e3ab583a..ca9609d7a15c256a78b058a26c9191542e06a8f3
@@@ -313,7 -313,7 +313,7 @@@ static const struct ad5686_chip_info ad
  };
  
  
 -static int __devinit ad5686_probe(struct spi_device *spi)
 +static int ad5686_probe(struct spi_device *spi)
  {
        struct ad5686_state *st;
        struct iio_dev *indio_dev;
                if (ret)
                        goto error_put_reg;
  
-               voltage_uv = regulator_get_voltage(st->reg);
+               ret = regulator_get_voltage(st->reg);
+               if (ret < 0)
+                       goto error_disable_reg;
+               voltage_uv = ret;
        }
  
        st->chip_info =
@@@ -379,7 -383,7 +383,7 @@@ error_put_reg
        return ret;
  }
  
 -static int __devexit ad5686_remove(struct spi_device *spi)
 +static int ad5686_remove(struct spi_device *spi)
  {
        struct iio_dev *indio_dev = spi_get_drvdata(spi);
        struct ad5686_state *st = iio_priv(indio_dev);
@@@ -408,7 -412,7 +412,7 @@@ static struct spi_driver ad5686_driver 
                   .owner = THIS_MODULE,
                   },
        .probe = ad5686_probe,
 -      .remove = __devexit_p(ad5686_remove),
 +      .remove = ad5686_remove,
        .id_table = ad5686_id,
  };
  module_spi_driver(ad5686_driver);
diff --combined drivers/iio/dac/ad5791.c
index c84180f23139fd25191539ebf266fb122ca85950,6efe83e32ac6f318a876e0bed6eb7cde661db897..6407b5407dddec57fe53ca20f9cba3e5bf90358e
@@@ -346,7 -346,7 +346,7 @@@ static const struct iio_info ad5791_inf
        .driver_module = THIS_MODULE,
  };
  
 -static int __devinit ad5791_probe(struct spi_device *spi)
 +static int ad5791_probe(struct spi_device *spi)
  {
        struct ad5791_platform_data *pdata = spi->dev.platform_data;
        struct iio_dev *indio_dev;
                if (ret)
                        goto error_put_reg_pos;
  
-               pos_voltage_uv = regulator_get_voltage(st->reg_vdd);
+               ret = regulator_get_voltage(st->reg_vdd);
+               if (ret < 0)
+                       goto error_disable_reg_pos;
+               pos_voltage_uv = ret;
        }
  
        st->reg_vss = regulator_get(&spi->dev, "vss");
                if (ret)
                        goto error_put_reg_neg;
  
-               neg_voltage_uv = regulator_get_voltage(st->reg_vss);
+               ret = regulator_get_voltage(st->reg_vss);
+               if (ret < 0)
+                       goto error_disable_reg_neg;
+               neg_voltage_uv = ret;
        }
  
        st->pwr_down = true;
@@@ -428,6 -436,7 +436,7 @@@ error_put_reg_neg
        if (!IS_ERR(st->reg_vss))
                regulator_put(st->reg_vss);
  
+ error_disable_reg_pos:
        if (!IS_ERR(st->reg_vdd))
                regulator_disable(st->reg_vdd);
  error_put_reg_pos:
@@@ -439,7 -448,7 +448,7 @@@ error_ret
        return ret;
  }
  
 -static int __devexit ad5791_remove(struct spi_device *spi)
 +static int ad5791_remove(struct spi_device *spi)
  {
        struct iio_dev *indio_dev = spi_get_drvdata(spi);
        struct ad5791_state *st = iio_priv(indio_dev);
@@@ -475,7 -484,7 +484,7 @@@ static struct spi_driver ad5791_driver 
                   .owner = THIS_MODULE,
                   },
        .probe = ad5791_probe,
 -      .remove = __devexit_p(ad5791_remove),
 +      .remove = ad5791_remove,
        .id_table = ad5791_id,
  };
  module_spi_driver(ad5791_driver);
index e5033b4cfba0cf3c1c88fba9d766c5d433e69a60,c7de8b5a01ff8ce3041a2b336c5505d5f2ef1fb9..a884252ac66b477db3a0fce966b40fb76ae456b2
@@@ -173,7 -173,7 +173,7 @@@ static int adf4350_set_freq(struct adf4
                        } while ((st->r1_mod > ADF4350_MAX_MODULUS) && r_cnt);
                } while (r_cnt == 0);
  
-               tmp = freq * (u64)st->r1_mod + (st->fpfd > 1);
+               tmp = freq * (u64)st->r1_mod + (st->fpfd >> 1);
                do_div(tmp, st->fpfd); /* Div round closest (n + d/2)/d */
                st->r0_fract = do_div(tmp, st->r1_mod);
                st->r0_int = tmp;
@@@ -355,7 -355,7 +355,7 @@@ static const struct iio_info adf4350_in
        .driver_module = THIS_MODULE,
  };
  
 -static int __devinit adf4350_probe(struct spi_device *spi)
 +static int adf4350_probe(struct spi_device *spi)
  {
        struct adf4350_platform_data *pdata = spi->dev.platform_data;
        struct iio_dev *indio_dev;
@@@ -440,7 -440,7 +440,7 @@@ error_put_reg
        return ret;
  }
  
 -static int __devexit adf4350_remove(struct spi_device *spi)
 +static int adf4350_remove(struct spi_device *spi)
  {
        struct iio_dev *indio_dev = spi_get_drvdata(spi);
        struct adf4350_state *st = iio_priv(indio_dev);
@@@ -476,7 -476,7 +476,7 @@@ static struct spi_driver adf4350_drive
                .owner  = THIS_MODULE,
        },
        .probe          = adf4350_probe,
 -      .remove         = __devexit_p(adf4350_remove),
 +      .remove         = adf4350_remove,
        .id_table       = adf4350_id,
  };
  module_spi_driver(adf4350_driver);
index ea3840038250391bb3e3e0c897fc07a246b67732,eabb8b57f6c32d09dd5e64638507c51b765cfcc5..b6c5b5c6c8c53dbd39e84baa91cd43e1b81ebfb7
@@@ -194,7 -194,7 +194,7 @@@ struct dma_buf_ops omap_dmabuf_ops = 
  struct dma_buf *omap_gem_prime_export(struct drm_device *dev,
                struct drm_gem_object *obj, int flags)
  {
-       return dma_buf_export(obj, &omap_dmabuf_ops, obj->size, 0600);
+       return dma_buf_export(obj, &omap_dmabuf_ops, obj->size, flags);
  }
  
  struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev,
                obj = buffer->priv;
                /* is it from our device? */
                if (obj->dev == dev) {
 +                      /*
 +                       * Importing dmabuf exported from out own gem increases
 +                       * refcount on gem itself instead of f_count of dmabuf.
 +                       */
                        drm_gem_object_reference(obj);
 +                      dma_buf_put(buffer);
                        return obj;
                }
        }