| .. | .. | 
|---|
 | 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, | 
|---|