Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'dm-4.1-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm

Pull device mapper fixes from Mike Snitzer:
"Two additional fixes for changes introduced via DM during the 4.1
merge window.

The first reverts a dm-crypt change that wasn't correct. The second
fixes a device format regression that impacted userspace"

* tag 'dm-4.1-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
init: fix regression by supporting devices with major:minor:offset format
Revert "dm crypt: fix deadlock when async crypto algorithm returns -EBUSY"

+9 -8
+6 -6
drivers/md/dm-crypt.c
··· 925 925 926 926 switch (r) { 927 927 /* async */ 928 - case -EINPROGRESS: 929 928 case -EBUSY: 930 929 wait_for_completion(&ctx->restart); 931 930 reinit_completion(&ctx->restart); 931 + /* fall through*/ 932 + case -EINPROGRESS: 932 933 ctx->req = NULL; 933 934 ctx->cc_sector++; 934 935 continue; ··· 1346 1345 struct dm_crypt_io *io = container_of(ctx, struct dm_crypt_io, ctx); 1347 1346 struct crypt_config *cc = io->cc; 1348 1347 1349 - if (error == -EINPROGRESS) 1348 + if (error == -EINPROGRESS) { 1349 + complete(&ctx->restart); 1350 1350 return; 1351 + } 1351 1352 1352 1353 if (!error && cc->iv_gen_ops && cc->iv_gen_ops->post) 1353 1354 error = cc->iv_gen_ops->post(cc, iv_of_dmreq(cc, dmreq), dmreq); ··· 1360 1357 crypt_free_req(cc, req_of_dmreq(cc, dmreq), io->base_bio); 1361 1358 1362 1359 if (!atomic_dec_and_test(&ctx->cc_pending)) 1363 - goto done; 1360 + return; 1364 1361 1365 1362 if (bio_data_dir(io->base_bio) == READ) 1366 1363 kcryptd_crypt_read_done(io); 1367 1364 else 1368 1365 kcryptd_crypt_write_io_submit(io, 1); 1369 - done: 1370 - if (!completion_done(&ctx->restart)) 1371 - complete(&ctx->restart); 1372 1366 } 1373 1367 1374 1368 static void kcryptd_crypt(struct work_struct *work)
+3 -2
init/do_mounts.c
··· 225 225 #endif 226 226 227 227 if (strncmp(name, "/dev/", 5) != 0) { 228 - unsigned maj, min; 228 + unsigned maj, min, offset; 229 229 char dummy; 230 230 231 - if (sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2) { 231 + if ((sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2) || 232 + (sscanf(name, "%u:%u:%u:%c", &maj, &min, &offset, &dummy) == 3)) { 232 233 res = MKDEV(maj, min); 233 234 if (maj != MAJOR(res) || min != MINOR(res)) 234 235 goto fail;