~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to fs/ecryptfs/crypto.c

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno
  • Date: 2011-06-07 12:14:05 UTC
  • mfrom: (43.1.9 sid)
  • Revision ID: james.westby@ubuntu.com-20110607121405-i3h1rd7nrnd2b73h
Tags: 2.6.39-2
[ Ben Hutchings ]
* [x86] Enable BACKLIGHT_APPLE, replacing BACKLIGHT_MBP_NVIDIA
  (Closes: #627492)
* cgroups: Disable memory resource controller by default. Allow it
  to be enabled using kernel parameter 'cgroup_enable=memory'.
* rt2800usb: Enable support for more USB devices including
  Linksys WUSB600N (Closes: #596626) (this change was accidentally
  omitted from 2.6.39-1)
* [x86] Remove Celeron from list of processors supporting PAE. Most
  'Celeron M' models do not.
* Update debconf template translations:
  - Swedish (Martin Bagge) (Closes: #628932)
  - French (David Prévot) (Closes: #628191)
* aufs: Update for 2.6.39 (Closes: #627837)
* Add stable 2.6.39.1, including:
  - ext4: dont set PageUptodate in ext4_end_bio()
  - pata_cmd64x: fix boot crash on parisc (Closes: #622997, #622745)
  - ext3: Fix fs corruption when make_indexed_dir() fails
  - netfilter: nf_ct_sip: validate Content-Length in TCP SIP messages
  - sctp: fix race between sctp_bind_addr_free() and
    sctp_bind_addr_conflict()
  - sctp: fix memory leak of the ASCONF queue when free asoc
  - md/bitmap: fix saving of events_cleared and other state
  - cdc_acm: Fix oops when Droids MuIn LCD is connected
  - cx88: Fix conversion from BKL to fine-grained locks (Closes: #619827)
  - keys: Set cred->user_ns in key_replace_session_keyring (CVE-2011-2184)
  - tmpfs: fix race between truncate and writepage
  - nfs41: Correct offset for LAYOUTCOMMIT
  - xen/mmu: fix a race window causing leave_mm BUG()
  - ext4: fix possible use-after-free in ext4_remove_li_request()
  For the complete list of changes, see:
   http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.39.1
* Bump ABI to 2
* netfilter: Enable IP_SET, IP_SET_BITMAP_IP, IP_SET_BITMAP_IPMAC,
  IP_SET_BITMAP_PORT, IP_SET_HASH_IP, IP_SET_HASH_IPPORT,
  IP_SET_HASH_IPPORTIP, IP_SET_HASH_IPPORTNET, IP_SET_HASH_NET,
  IP_SET_HASH_NETPORT, IP_SET_LIST_SET, NETFILTER_XT_SET as modules
  (Closes: #629401)

[ Aurelien Jarno ]
* [mipsel/loongson-2f] Disable_SCSI_LPFC to workaround GCC ICE.

Show diffs side-by-side

added added

removed removed

Lines of Context:
266
266
                                 &mount_crypt_stat->global_auth_tok_list,
267
267
                                 mount_crypt_stat_list) {
268
268
                list_del(&auth_tok->mount_crypt_stat_list);
269
 
                mount_crypt_stat->num_global_auth_toks--;
270
269
                if (auth_tok->global_auth_tok_key
271
270
                    && !(auth_tok->flags & ECRYPTFS_AUTH_TOK_INVALID))
272
271
                        key_put(auth_tok->global_auth_tok_key);
1389
1388
                rc = -ENOMEM;
1390
1389
                goto out;
1391
1390
        }
 
1391
        /* Zeroed page ensures the in-header unencrypted i_size is set to 0 */
1392
1392
        rc = ecryptfs_write_headers_virt(virt, virt_len, &size, crypt_stat,
1393
1393
                                         ecryptfs_dentry);
1394
1394
        if (unlikely(rc)) {
1452
1452
        crypt_stat->metadata_size = ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE;
1453
1453
}
1454
1454
 
 
1455
void ecryptfs_i_size_init(const char *page_virt, struct inode *inode)
 
1456
{
 
1457
        struct ecryptfs_mount_crypt_stat *mount_crypt_stat;
 
1458
        struct ecryptfs_crypt_stat *crypt_stat;
 
1459
        u64 file_size;
 
1460
 
 
1461
        crypt_stat = &ecryptfs_inode_to_private(inode)->crypt_stat;
 
1462
        mount_crypt_stat =
 
1463
                &ecryptfs_superblock_to_private(inode->i_sb)->mount_crypt_stat;
 
1464
        if (mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED) {
 
1465
                file_size = i_size_read(ecryptfs_inode_to_lower(inode));
 
1466
                if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR)
 
1467
                        file_size += crypt_stat->metadata_size;
 
1468
        } else
 
1469
                file_size = get_unaligned_be64(page_virt);
 
1470
        i_size_write(inode, (loff_t)file_size);
 
1471
        crypt_stat->flags |= ECRYPTFS_I_SIZE_INITIALIZED;
 
1472
}
 
1473
 
1455
1474
/**
1456
1475
 * ecryptfs_read_headers_virt
1457
1476
 * @page_virt: The virtual address into which to read the headers
1482
1501
                rc = -EINVAL;
1483
1502
                goto out;
1484
1503
        }
 
1504
        if (!(crypt_stat->flags & ECRYPTFS_I_SIZE_INITIALIZED))
 
1505
                ecryptfs_i_size_init(page_virt, ecryptfs_dentry->d_inode);
1485
1506
        offset += MAGIC_ECRYPTFS_MARKER_SIZE_BYTES;
1486
1507
        rc = ecryptfs_process_flags(crypt_stat, (page_virt + offset),
1487
1508
                                    &bytes_read);