* [bug report] eCryptfs: convert mmap functions to use persistent file
@ 2022-01-19 11:30 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2022-01-19 11:30 UTC (permalink / raw)
To: ecryptfs
Hello eCryptFS developers,
The patch bf12be1cc851: "eCryptfs: convert mmap functions to use
persistent file" from Oct 16, 2007, leads to the following Smatch
static checker warning:
./include/linux/fs.h:777 inode_lock()
warn: sleeping in atomic context
ecryptfs_copy_up_encrypted_with_header() <- disables preempt
-> ecryptfs_read_xattr_region()
-> ecryptfs_getxattr_lower()
-> inode_lock()
fs/ecryptfs/mmap.c
108 static int
109 ecryptfs_copy_up_encrypted_with_header(struct page *page,
110 struct ecryptfs_crypt_stat *crypt_stat)
111 {
112 loff_t extent_num_in_page = 0;
113 loff_t num_extents_per_page = (PAGE_SIZE
114 / crypt_stat->extent_size);
115 int rc = 0;
116
117 while (extent_num_in_page < num_extents_per_page) {
118 loff_t view_extent_num = ((((loff_t)page->index)
119 * num_extents_per_page)
120 + extent_num_in_page);
121 size_t num_header_extents_at_front =
122 (crypt_stat->metadata_size / crypt_stat->extent_size);
123
124 if (view_extent_num < num_header_extents_at_front) {
125 /* This is a header extent */
126 char *page_virt;
127
128 page_virt = kmap_atomic(page);
kmap_atomic() disables preemption
129 memset(page_virt, 0, PAGE_SIZE);
130 /* TODO: Support more than one header extent */
131 if (view_extent_num == 0) {
132 size_t written;
133
134 rc = ecryptfs_read_xattr_region(
^^^^^^^^^^^^^^^^^^^^^^^^^^
ecryptfs_read_xattr_region() cannot succeed without taking a mutex.
135 page_virt, page->mapping->host);
136 strip_xattr_flag(page_virt + 16, crypt_stat);
137 ecryptfs_write_header_metadata(page_virt + 20,
138 crypt_stat,
139 &written);
140 }
141 kunmap_atomic(page_virt);
142 flush_dcache_page(page);
143 if (rc) {
144 printk(KERN_ERR "%s: Error reading xattr "
145 "region; rc = [%d]\n", __func__, rc);
146 goto out;
147 }
148 } else {
regards,
dan carpenter
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-01-19 11:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-19 11:30 [bug report] eCryptfs: convert mmap functions to use persistent file Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).