aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAndrey Konovalov <andrey.konovalov@linaro.org>2015-04-30 18:57:00 +0300
committerAndrey Konovalov <andrey.konovalov@linaro.org>2015-04-30 18:57:00 +0300
commiteecc87b23d1c5388c8fb7a183ef1e6f60d3cde8a (patch)
tree3a2b96613c237f904ea5e1bba98b2db7d115b0c0 /drivers
parenta02ae6c69680b4a30f58cb1741d3f2f1e671885f (diff)
parent230b22d72454f0b9ed2cf1410771bbba7830f89e (diff)
Automatically merging tracking-llvm into merge-linux-linaro
Conflicting files: arch/arm/kernel/psci.c arch/mips/include/asm/thread_info.h arch/mips/math-emu/dp_add.c arch/mips/math-emu/dp_sub.c arch/mips/math-emu/sp_add.c arch/mips/math-emu/sp_sub.c
Diffstat (limited to 'drivers')
-rw-r--r--drivers/bus/arm-cci.c2
-rw-r--r--drivers/md/bcache/sysfs.c10
-rw-r--r--drivers/md/raid10.c24
-rw-r--r--drivers/net/wimax/i2400m/fw.c2
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_base.c2
5 files changed, 23 insertions, 17 deletions
diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c
index b854125e4831..1a1f277a4a6f 100644
--- a/drivers/bus/arm-cci.c
+++ b/drivers/bus/arm-cci.c
@@ -1325,7 +1325,7 @@ asmlinkage void __naked cci_enable_port_for_self(void)
[sizeof_struct_ace_port] "i" (sizeof(struct cci_ace_port)),
[offsetof_port_phys] "i" (offsetof(struct cci_ace_port, phys)) );
- unreachable();
+ // unreachable(); // not allowed in naked function
}
/**
diff --git a/drivers/md/bcache/sysfs.c b/drivers/md/bcache/sysfs.c
index b3ff57d61dde..53d8baa741fb 100644
--- a/drivers/md/bcache/sysfs.c
+++ b/drivers/md/bcache/sysfs.c
@@ -731,6 +731,11 @@ static struct attribute *bch_cache_set_internal_files[] = {
};
KTYPE(bch_cache_set_internal);
+static int __bch_cache_cmp(const void *l, const void *r)
+{
+ return *((uint16_t *) r) - *((uint16_t *) l);
+}
+
SHOW(__bch_cache)
{
struct cache *ca = container_of(kobj, struct cache, kobj);
@@ -755,9 +760,6 @@ SHOW(__bch_cache)
CACHE_REPLACEMENT(&ca->sb));
if (attr == &sysfs_priority_stats) {
- int cmp(const void *l, const void *r)
- { return *((uint16_t *) r) - *((uint16_t *) l); }
-
struct bucket *b;
size_t n = ca->sb.nbuckets, i;
size_t unused = 0, available = 0, dirty = 0, meta = 0;
@@ -786,7 +788,7 @@ SHOW(__bch_cache)
p[i] = ca->buckets[i].prio;
mutex_unlock(&ca->set->bucket_lock);
- sort(p, n, sizeof(uint16_t), cmp, NULL);
+ sort(p, n, sizeof(uint16_t), __bch_cache_cmp, NULL);
while (n &&
!cached[n - 1])
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index e793ab6b3570..ba244d28e740 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -711,11 +711,7 @@ static int raid10_mergeable_bvec(struct mddev *mddev,
max = biovec->bv_len;
if (mddev->merge_check_needed) {
- struct {
- struct r10bio r10_bio;
- struct r10dev devs[conf->copies];
- } on_stack;
- struct r10bio *r10_bio = &on_stack.r10_bio;
+ struct r10bio *r10_bio;
int s;
if (conf->reshape_progress != MaxSector) {
/* Cannot give any guidance during reshape */
@@ -723,6 +719,10 @@ static int raid10_mergeable_bvec(struct mddev *mddev,
return biovec->bv_len;
return 0;
}
+ r10_bio = kmalloc(sizeof *r10_bio +
+ conf->copies * sizeof(struct r10dev), GFP_NOIO);
+ if (!r10_bio)
+ return 0;
r10_bio->sector = sector;
raid10_find_phys(conf, r10_bio);
rcu_read_lock();
@@ -755,6 +755,7 @@ static int raid10_mergeable_bvec(struct mddev *mddev,
}
}
rcu_read_unlock();
+ kfree(r10_bio);
}
return max;
}
@@ -4554,15 +4555,16 @@ static int handle_reshape_read_error(struct mddev *mddev,
/* Use sync reads to get the blocks from somewhere else */
int sectors = r10_bio->sectors;
struct r10conf *conf = mddev->private;
- struct {
- struct r10bio r10_bio;
- struct r10dev devs[conf->copies];
- } on_stack;
- struct r10bio *r10b = &on_stack.r10_bio;
+ struct r10bio *r10b;
+
int slot = 0;
int idx = 0;
struct bio_vec *bvec = r10_bio->master_bio->bi_io_vec;
+ r10b = kmalloc(sizeof *r10b + conf->copies * sizeof(struct r10dev),
+ GFP_NOIO);
+ if (!r10b)
+ return -ENOMEM;
r10b->sector = r10_bio->sector;
__raid10_find_phys(&conf->prev, r10b);
@@ -4602,11 +4604,13 @@ static int handle_reshape_read_error(struct mddev *mddev,
/* couldn't read this block, must give up */
set_bit(MD_RECOVERY_INTR,
&mddev->recovery);
+ kfree(r10b);
return -EIO;
}
sectors -= s;
idx++;
}
+ kfree(r10b);
return 0;
}
diff --git a/drivers/net/wimax/i2400m/fw.c b/drivers/net/wimax/i2400m/fw.c
index c9c711dcd0e6..a89b5685e68b 100644
--- a/drivers/net/wimax/i2400m/fw.c
+++ b/drivers/net/wimax/i2400m/fw.c
@@ -652,7 +652,7 @@ static int i2400m_download_chunk(struct i2400m *i2400m, const void *chunk,
struct device *dev = i2400m_dev(i2400m);
struct {
struct i2400m_bootrom_header cmd;
- u8 cmd_payload[chunk_len];
+ u8 cmd_payload[];
} __packed *buf;
struct i2400m_bootrom_header ack;
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 890637fdd61e..2fbf1a246ac7 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -261,7 +261,7 @@ __megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd)
* @instance: Adapter soft state
* @cmd: Command packet to be returned to free command pool
*/
-inline void
+void
megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd)
{
unsigned long flags;