+7
-12
drivers/scsi/ufs/ufshpb.c
+7
-12
drivers/scsi/ufs/ufshpb.c
···
1254
1254
struct utp_hpb_rsp *rsp_field = &lrbp->ucd_rsp_ptr->hr;
1255
1255
int data_seg_len;
1256
1256
1257
+
data_seg_len = be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_2)
1258
+
& MASK_RSP_UPIU_DATA_SEG_LEN;
1259
+
1260
+
/* If data segment length is zero, rsp_field is not valid */
1261
+
if (!data_seg_len)
1262
+
return;
1263
+
1257
1264
if (unlikely(lrbp->lun != rsp_field->lun)) {
1258
1265
struct scsi_device *sdev;
1259
1266
bool found = false;
···
1292
1285
dev_notice(&hpb->sdev_ufs_lu->sdev_dev,
1293
1286
"%s: ufshpb state is not PRESENT/SUSPEND\n",
1294
1287
__func__);
1295
-
return;
1296
-
}
1297
-
1298
-
data_seg_len = be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_2)
1299
-
& MASK_RSP_UPIU_DATA_SEG_LEN;
1300
-
1301
-
/* To flush remained rsp_list, we queue the map_work task */
1302
-
if (!data_seg_len) {
1303
-
if (!ufshpb_is_general_lun(hpb->lun))
1304
-
return;
1305
-
1306
-
ufshpb_kick_map_work(hpb);
1307
1288
return;
1308
1289
}
1309
1290
+22
-10
drivers/target/iscsi/iscsi_target.c
+22
-10
drivers/target/iscsi/iscsi_target.c
···
3596
3596
void iscsit_thread_get_cpumask(struct iscsi_conn *conn)
3597
3597
{
3598
3598
int ord, cpu;
3599
-
cpumask_t conn_allowed_cpumask;
3600
-
3601
-
cpumask_and(&conn_allowed_cpumask, iscsit_global->allowed_cpumask,
3602
-
cpu_online_mask);
3599
+
cpumask_var_t conn_allowed_cpumask;
3603
3600
3604
3601
/*
3605
3602
* bitmap_id is assigned from iscsit_global->ts_bitmap from
···
3606
3609
* iSCSI connection's RX/TX threads will be scheduled to
3607
3610
* execute upon.
3608
3611
*/
3609
-
cpumask_clear(conn->conn_cpumask);
3610
-
ord = conn->bitmap_id % cpumask_weight(&conn_allowed_cpumask);
3611
-
for_each_cpu(cpu, &conn_allowed_cpumask) {
3612
-
if (ord-- == 0) {
3613
-
cpumask_set_cpu(cpu, conn->conn_cpumask);
3614
-
return;
3612
+
if (!zalloc_cpumask_var(&conn_allowed_cpumask, GFP_KERNEL)) {
3613
+
ord = conn->bitmap_id % cpumask_weight(cpu_online_mask);
3614
+
for_each_online_cpu(cpu) {
3615
+
if (ord-- == 0) {
3616
+
cpumask_set_cpu(cpu, conn->conn_cpumask);
3617
+
return;
3618
+
}
3615
3619
}
3620
+
} else {
3621
+
cpumask_and(conn_allowed_cpumask, iscsit_global->allowed_cpumask,
3622
+
cpu_online_mask);
3623
+
3624
+
cpumask_clear(conn->conn_cpumask);
3625
+
ord = conn->bitmap_id % cpumask_weight(conn_allowed_cpumask);
3626
+
for_each_cpu(cpu, conn_allowed_cpumask) {
3627
+
if (ord-- == 0) {
3628
+
cpumask_set_cpu(cpu, conn->conn_cpumask);
3629
+
free_cpumask_var(conn_allowed_cpumask);
3630
+
return;
3631
+
}
3632
+
}
3633
+
free_cpumask_var(conn_allowed_cpumask);
3616
3634
}
3617
3635
/*
3618
3636
* This should never be reached..
+14
-10
drivers/target/iscsi/iscsi_target_configfs.c
+14
-10
drivers/target/iscsi/iscsi_target_configfs.c
···
1137
1137
static ssize_t lio_target_wwn_cpus_allowed_list_store(
1138
1138
struct config_item *item, const char *page, size_t count)
1139
1139
{
1140
-
int ret;
1140
+
int ret = -ENOMEM;
1141
1141
char *orig;
1142
-
cpumask_t new_allowed_cpumask;
1142
+
cpumask_var_t new_allowed_cpumask;
1143
+
1144
+
if (!zalloc_cpumask_var(&new_allowed_cpumask, GFP_KERNEL))
1145
+
goto out;
1143
1146
1144
1147
orig = kstrdup(page, GFP_KERNEL);
1145
1148
if (!orig)
1146
-
return -ENOMEM;
1149
+
goto out_free_cpumask;
1147
1150
1148
-
cpumask_clear(&new_allowed_cpumask);
1149
-
ret = cpulist_parse(orig, &new_allowed_cpumask);
1151
+
ret = cpulist_parse(orig, new_allowed_cpumask);
1152
+
if (!ret)
1153
+
cpumask_copy(iscsit_global->allowed_cpumask,
1154
+
new_allowed_cpumask);
1150
1155
1151
1156
kfree(orig);
1152
-
if (ret != 0)
1153
-
return ret;
1154
-
1155
-
cpumask_copy(iscsit_global->allowed_cpumask, &new_allowed_cpumask);
1156
-
return count;
1157
+
out_free_cpumask:
1158
+
free_cpumask_var(new_allowed_cpumask);
1159
+
out:
1160
+
return ret ? ret : count;
1157
1161
}
1158
1162
1159
1163
CONFIGFS_ATTR(lio_target_wwn_, cpus_allowed_list);