* [dhowells-fs:crypto-krb5 33/33] fs/afs/cm_security.c:253:10: warning: format specifies type 'size_t' (aka 'unsigned int') but the argument has type 'unsigned long'
@ 2025-01-31 21:50 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-01-31 21:50 UTC (permalink / raw)
To: David Howells; +Cc: llvm, oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git crypto-krb5
head: 3108d67c535aa3ea00a95b1daf8efdc15bb074b4
commit: 3108d67c535aa3ea00a95b1daf8efdc15bb074b4 [33/33] afs: Use rxgk RESPONSE to pass token for callback channel
config: hexagon-allyesconfig (https://download.01.org/0day-ci/archive/20250201/202502010518.LCA4OLR3-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250201/202502010518.LCA4OLR3-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502010518.LCA4OLR3-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> fs/afs/cm_security.c:253:10: warning: format specifies type 'size_t' (aka 'unsigned int') but the argument has type 'unsigned long' [-Wformat]
252 | pr_err("Appdata size incorrect %zx != %zx\n",
| ~~~
| %lx
253 | (unsigned long)xdr - (unsigned long)token, adatasize);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/printk.h:544:33: note: expanded from macro 'pr_err'
544 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:501:60: note: expanded from macro 'printk'
501 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:473:19: note: expanded from macro 'printk_index_wrap'
473 | _p_func(_fmt, ##__VA_ARGS__); \
| ~~~~ ^~~~~~~~~~~
fs/afs/cm_security.c:170:2: warning: variable 'toksize' is uninitialized when used here [-Wuninitialized]
170 | toksize += keysize + 8 + 4 + 4 + 8 + xdr_len_object(authsize);
| ^~~~~~~
fs/afs/cm_security.c:131:45: note: initialize the variable 'toksize' to silence this warning
131 | size_t keysize, uuidsize, authsize, toksize, encsize, contsize, adatasize, offset;
| ^
| = 0
2 warnings generated.
vim +253 fs/afs/cm_security.c
119
120 /*
121 * Create an RxGK GSS token to use as a ticket to the specified fileserver.
122 */
123 int afs_create_cm_token(struct afs_server *server)
124 {
125 const struct krb5_enctype *krb5;
126 const struct krb5_buffer *server_key;
127 struct crypto_aead *aead;
128 struct scatterlist sg;
129 struct afs_net *net = server->cell->net;
130 const struct key *key = net->fs_cm_token_key;
131 size_t keysize, uuidsize, authsize, toksize, encsize, contsize, adatasize, offset;
132 __be32 *xdr;
133 void *token, *K0, *encxdr;
134 int ret;
135
136 if (!key)
137 return -ENOKEY;
138
139 krb5 = crypto_krb5_find_enctype(KRB5_ENCTYPE_AES128_CTS_HMAC_SHA1_96);
140 if (!krb5)
141 return -ENOPKG;
142 server_key = (const void *)&key->payload.data[2];
143
144 /* struct rxgk_key {
145 * afs_uint32 enctype;
146 * opaque key<>;
147 * };
148 */
149 keysize = 4 + xdr_len_object(krb5->key_len);
150
151 /* struct RXGK_AuthName {
152 * afs_int32 kind;
153 * opaque data<AUTHDATAMAX>;
154 * opaque display<AUTHPRINTABLEMAX>;
155 * };
156 */
157 uuidsize = sizeof(server->uuid);
158 authsize = 4 + xdr_len_object(uuidsize) + xdr_len_object(0);
159
160 /* struct RXGK_Token {
161 * rxgk_key K0;
162 * RXGK_Level level;
163 * rxgkTime starttime;
164 * afs_int32 lifetime;
165 * afs_int32 bytelife;
166 * rxgkTime expirationtime;
167 * struct RXGK_AuthName identities<>;
168 * };
169 */
170 toksize += keysize + 8 + 4 + 4 + 8 + xdr_len_object(authsize);
171
172 offset = 0;
173 encsize = crypto_krb5_how_much_buffer(krb5, KRB5_ENCRYPT_MODE, toksize, &offset);
174
175 /* struct RXGK_TokenContainer {
176 * afs_int32 kvno;
177 * afs_int32 enctype;
178 * opaque encrypted_token<>;
179 * };
180 */
181 contsize = 4 + 4 + xdr_len_object(encsize);
182
183 /*
184 * struct RXGK_Authenticator_AFSAppData {
185 * afsUUID client_uuid;
186 * RXGK_Data cb_tok;
187 * RXGK_Data cb_key;
188 * afs_int32 enctype;
189 * afsUUID target_uuid;
190 * };
191 */
192 adatasize = 44 + xdr_len_object(contsize) + xdr_len_object(krb5->key_len) + 4 + 44;
193
194 ret = -ENOMEM;
195 token = kzalloc(adatasize, GFP_KERNEL);
196 if (!token)
197 goto out;
198 xdr = token;
199
200 xdr[0] = net->uuid.time_low; /* appdata.client_uuid */
201 xdr[1] = htonl(ntohs(net->uuid.time_mid));
202 xdr[2] = htonl(ntohs(net->uuid.time_hi_and_version));
203 xdr[3] = htonl((s8) net->uuid.clock_seq_hi_and_reserved);
204 xdr[4] = htonl((s8) net->uuid.clock_seq_low);
205 for (int loop = 0; loop < 6; loop++)
206 xdr[loop + 5] = htonl((s8)net->uuid.node[loop]);
207 xdr += 11;
208
209 *xdr++ = htonl(contsize); /* appdata.cb_tok.len */
210 *xdr++ = htonl(1); /* cont.kvno */
211 *xdr++ = htonl(krb5->etype); /* cont.enctype */
212 *xdr++ = htonl(encsize); /* cont.encrypted_token.len */
213
214 encxdr = xdr;
215 xdr += offset / 4;
216 *xdr++ = htonl(krb5->etype); /* token.K0.enctype */
217 *xdr++ = htonl(krb5->key_len); /* token.K0.key.len */
218 K0 = xdr;
219 get_random_bytes(K0, krb5->key_len); /* token.K0.key.data */
220 xdr += xdr_round_up(krb5->key_len) / 4;
221
222 *xdr++ = htonl(RXRPC_SECURITY_ENCRYPT); /* token.level */
223 *xdr++ = htonl(0); /* token.starttime */
224 *xdr++ = htonl(0); /* " */
225 *xdr++ = htonl(0); /* token.lifetime */
226 *xdr++ = htonl(0); /* token.bytelife */
227 *xdr++ = htonl(0); /* token.expirationtime */
228 *xdr++ = htonl(0); /* " */
229 *xdr++ = htonl(1); /* token.identities.count */
230 *xdr++ = htonl(0); /* token.identities[0].kind */
231 *xdr++ = htonl(uuidsize); /* token.identities[0].data.len */
232 memcpy(xdr, &server->uuid, uuidsize);
233 xdr += xdr_round_up(uuidsize) / 4;
234 *xdr++ = htonl(0); /* token.identities[0].display.len */
235
236 xdr = encxdr + xdr_round_up(encsize);
237
238 *xdr++ = htonl(krb5->key_len); /* appdata.cb_key.len */
239 memcpy(xdr, K0, krb5->key_len); /* appdata.cb_key.data */
240 xdr += xdr_round_up(krb5->key_len) / 4;
241 *xdr++ = htonl(krb5->etype); /* appdata.enctype */
242 xdr[0] = server->_uuid.time_low; /* appdata.target_uuid */
243 xdr[1] = htonl(ntohs(server->_uuid.time_mid));
244 xdr[2] = htonl(ntohs(server->_uuid.time_hi_and_version));
245 xdr[3] = htonl((s8) server->_uuid.clock_seq_hi_and_reserved);
246 xdr[4] = htonl((s8) server->_uuid.clock_seq_low);
247 for (int loop = 0; loop < 6; loop++)
248 xdr[loop + 5] = htonl((s8)server->_uuid.node[loop]);
249 xdr += 11;
250
251 if ((unsigned long)xdr - (unsigned long)token != adatasize)
252 pr_err("Appdata size incorrect %zx != %zx\n",
> 253 (unsigned long)xdr - (unsigned long)token, adatasize);
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-01-31 21:51 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-31 21:50 [dhowells-fs:crypto-krb5 33/33] fs/afs/cm_security.c:253:10: warning: format specifies type 'size_t' (aka 'unsigned int') but the argument has type 'unsigned long' kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox