| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
|---|
| 1 | 2 | /** |
|---|
| 2 | 3 | * eCryptfs: Linux filesystem encryption layer |
|---|
| 3 | 4 | * |
|---|
| .. | .. |
|---|
| 6 | 7 | * Copyright (C) 2004-2006 International Business Machines Corp. |
|---|
| 7 | 8 | * Author(s): Michael A. Halcrow <mahalcro@us.ibm.com> |
|---|
| 8 | 9 | * Michael C. Thompson <mcthomps@us.ibm.com> |
|---|
| 9 | | - * |
|---|
| 10 | | - * This program is free software; you can redistribute it and/or |
|---|
| 11 | | - * modify it under the terms of the GNU General Public License as |
|---|
| 12 | | - * published by the Free Software Foundation; either version 2 of the |
|---|
| 13 | | - * License, or (at your option) any later version. |
|---|
| 14 | | - * |
|---|
| 15 | | - * This program is distributed in the hope that it will be useful, but |
|---|
| 16 | | - * WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 17 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|---|
| 18 | | - * General Public License for more details. |
|---|
| 19 | | - * |
|---|
| 20 | | - * You should have received a copy of the GNU General Public License |
|---|
| 21 | | - * along with this program; if not, write to the Free Software |
|---|
| 22 | | - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
|---|
| 23 | | - * 02111-1307, USA. |
|---|
| 24 | 10 | */ |
|---|
| 25 | 11 | |
|---|
| 26 | 12 | #include <linux/fs.h> |
|---|
| .. | .. |
|---|
| 67 | 53 | return inode; |
|---|
| 68 | 54 | } |
|---|
| 69 | 55 | |
|---|
| 70 | | -static void ecryptfs_i_callback(struct rcu_head *head) |
|---|
| 56 | +static void ecryptfs_free_inode(struct inode *inode) |
|---|
| 71 | 57 | { |
|---|
| 72 | | - struct inode *inode = container_of(head, struct inode, i_rcu); |
|---|
| 73 | 58 | struct ecryptfs_inode_info *inode_info; |
|---|
| 74 | 59 | inode_info = ecryptfs_inode_to_private(inode); |
|---|
| 75 | 60 | |
|---|
| .. | .. |
|---|
| 92 | 77 | inode_info = ecryptfs_inode_to_private(inode); |
|---|
| 93 | 78 | BUG_ON(inode_info->lower_file); |
|---|
| 94 | 79 | ecryptfs_destroy_crypt_stat(&inode_info->crypt_stat); |
|---|
| 95 | | - call_rcu(&inode->i_rcu, ecryptfs_i_callback); |
|---|
| 96 | 80 | } |
|---|
| 97 | 81 | |
|---|
| 98 | 82 | /** |
|---|
| .. | .. |
|---|
| 186 | 170 | const struct super_operations ecryptfs_sops = { |
|---|
| 187 | 171 | .alloc_inode = ecryptfs_alloc_inode, |
|---|
| 188 | 172 | .destroy_inode = ecryptfs_destroy_inode, |
|---|
| 173 | + .free_inode = ecryptfs_free_inode, |
|---|
| 189 | 174 | .statfs = ecryptfs_statfs, |
|---|
| 190 | 175 | .remount_fs = NULL, |
|---|
| 191 | 176 | .evict_inode = ecryptfs_evict_inode, |
|---|