@@ -169,16 +169,22 @@ static void __init lsm_order_append(struct lsm_info *lsm, const char *src)
169169 lsm_is_enabled (lsm ) ? "enabled" : "disabled" );
170170}
171171
172- static void __init lsm_set_blob_size (int * need , int * lbs )
172+ /**
173+ * lsm_blob_size_update - Update the LSM blob size and offset information
174+ * @sz_req: the requested additional blob size
175+ * @sz_cur: the existing blob size
176+ */
177+ static void __init lsm_blob_size_update (unsigned int * sz_req ,
178+ unsigned int * sz_cur )
173179{
174- int offset ;
180+ unsigned int offset ;
175181
176- if (* need < = 0 )
182+ if (* sz_req = = 0 )
177183 return ;
178184
179- offset = ALIGN (* lbs , sizeof (void * ));
180- * lbs = offset + * need ;
181- * need = offset ;
185+ offset = ALIGN (* sz_cur , sizeof (void * ));
186+ * sz_cur = offset + * sz_req ;
187+ * sz_req = offset ;
182188}
183189
184190/**
@@ -193,27 +199,30 @@ static void __init lsm_prepare(struct lsm_info *lsm)
193199 return ;
194200
195201 /* Register the LSM blob sizes. */
196- lsm_set_blob_size (& blobs -> lbs_cred , & blob_sizes .lbs_cred );
197- lsm_set_blob_size (& blobs -> lbs_file , & blob_sizes .lbs_file );
198- lsm_set_blob_size (& blobs -> lbs_ib , & blob_sizes .lbs_ib );
202+ blobs = lsm -> blobs ;
203+ lsm_blob_size_update (& blobs -> lbs_cred , & blob_sizes .lbs_cred );
204+ lsm_blob_size_update (& blobs -> lbs_file , & blob_sizes .lbs_file );
205+ lsm_blob_size_update (& blobs -> lbs_ib , & blob_sizes .lbs_ib );
199206 /* inode blob gets an rcu_head in addition to LSM blobs. */
200207 if (blobs -> lbs_inode && blob_sizes .lbs_inode == 0 )
201208 blob_sizes .lbs_inode = sizeof (struct rcu_head );
202- lsm_set_blob_size (& blobs -> lbs_inode , & blob_sizes .lbs_inode );
203- lsm_set_blob_size (& blobs -> lbs_ipc , & blob_sizes .lbs_ipc );
204- lsm_set_blob_size (& blobs -> lbs_key , & blob_sizes .lbs_key );
205- lsm_set_blob_size (& blobs -> lbs_msg_msg , & blob_sizes .lbs_msg_msg );
206- lsm_set_blob_size (& blobs -> lbs_perf_event , & blob_sizes .lbs_perf_event );
207- lsm_set_blob_size (& blobs -> lbs_sock , & blob_sizes .lbs_sock );
208- lsm_set_blob_size (& blobs -> lbs_superblock , & blob_sizes .lbs_superblock );
209- lsm_set_blob_size (& blobs -> lbs_task , & blob_sizes .lbs_task );
210- lsm_set_blob_size (& blobs -> lbs_tun_dev , & blob_sizes .lbs_tun_dev );
211- lsm_set_blob_size (& blobs -> lbs_xattr_count ,
212- & blob_sizes .lbs_xattr_count );
213- lsm_set_blob_size (& blobs -> lbs_bdev , & blob_sizes .lbs_bdev );
214- lsm_set_blob_size (& blobs -> lbs_bpf_map , & blob_sizes .lbs_bpf_map );
215- lsm_set_blob_size (& blobs -> lbs_bpf_prog , & blob_sizes .lbs_bpf_prog );
216- lsm_set_blob_size (& blobs -> lbs_bpf_token , & blob_sizes .lbs_bpf_token );
209+ lsm_blob_size_update (& blobs -> lbs_inode , & blob_sizes .lbs_inode );
210+ lsm_blob_size_update (& blobs -> lbs_ipc , & blob_sizes .lbs_ipc );
211+ lsm_blob_size_update (& blobs -> lbs_key , & blob_sizes .lbs_key );
212+ lsm_blob_size_update (& blobs -> lbs_msg_msg , & blob_sizes .lbs_msg_msg );
213+ lsm_blob_size_update (& blobs -> lbs_perf_event ,
214+ & blob_sizes .lbs_perf_event );
215+ lsm_blob_size_update (& blobs -> lbs_sock , & blob_sizes .lbs_sock );
216+ lsm_blob_size_update (& blobs -> lbs_superblock ,
217+ & blob_sizes .lbs_superblock );
218+ lsm_blob_size_update (& blobs -> lbs_task , & blob_sizes .lbs_task );
219+ lsm_blob_size_update (& blobs -> lbs_tun_dev , & blob_sizes .lbs_tun_dev );
220+ lsm_blob_size_update (& blobs -> lbs_xattr_count ,
221+ & blob_sizes .lbs_xattr_count );
222+ lsm_blob_size_update (& blobs -> lbs_bdev , & blob_sizes .lbs_bdev );
223+ lsm_blob_size_update (& blobs -> lbs_bpf_map , & blob_sizes .lbs_bpf_map );
224+ lsm_blob_size_update (& blobs -> lbs_bpf_prog , & blob_sizes .lbs_bpf_prog );
225+ lsm_blob_size_update (& blobs -> lbs_bpf_token , & blob_sizes .lbs_bpf_token );
217226}
218227
219228/* Initialize a given LSM, if it is enabled. */
0 commit comments