Lines Matching refs:blob

130 static bool vpd_blob_has_data(const struct vpd_blob *blob)  in vpd_blob_has_data()  argument
132 return blob->data && blob->len; in vpd_blob_has_data()
135 static void vpd_blob_free(const struct vpd_blob *blob) in vpd_blob_free() argument
137 if (blob) { in vpd_blob_free()
138 kvfree(blob->data); in vpd_blob_free()
139 kfree(blob); in vpd_blob_free()
152 static int vpd_blob_extend(struct vpd_blob *blob, const char *data, size_t len) in vpd_blob_extend() argument
154 const size_t new_len = blob->len + len; in vpd_blob_extend()
155 const size_t old_len = blob->len; in vpd_blob_extend()
156 const char *old_ptr = blob->data; in vpd_blob_extend()
167 blob->data = new_ptr; in vpd_blob_extend()
168 blob->len = new_len; in vpd_blob_extend()
188 struct vpd_blob *blob; in vpd_blob_generate() local
193 blob = kzalloc(sizeof(*blob), GFP_KERNEL_ACCOUNT); in vpd_blob_generate()
194 if (!blob) in vpd_blob_generate()
198 err = vpd_blob_extend(blob, buf, len); in vpd_blob_generate()
200 if (err != 0 || !vpd_blob_has_data(blob)) in vpd_blob_generate()
203 return blob; in vpd_blob_generate()
205 vpd_blob_free(blob); in vpd_blob_generate()
358 const struct vpd_blob *blob; in papr_vpd_run_sequence() local
362 blob = vpd_blob_generate(vpd_sequence_fill_work_area, &seq); in papr_vpd_run_sequence()
363 if (!blob) in papr_vpd_run_sequence()
368 vpd_blob_free(blob); in papr_vpd_run_sequence()
372 return blob; in papr_vpd_run_sequence()
389 const struct vpd_blob *blob; in papr_vpd_retrieve() local
399 blob = papr_vpd_run_sequence(loc_code); in papr_vpd_retrieve()
400 if (!IS_ERR(blob)) /* Success. */ in papr_vpd_retrieve()
402 if (PTR_ERR(blob) != -EAGAIN) /* Hard error. */ in papr_vpd_retrieve()
408 return blob; in papr_vpd_retrieve()
413 const struct vpd_blob *blob = file->private_data; in papr_vpd_handle_read() local
416 if (!vpd_blob_has_data(blob)) { in papr_vpd_handle_read()
421 return simple_read_from_buffer(buf, size, off, blob->data, blob->len); in papr_vpd_handle_read()
426 const struct vpd_blob *blob = file->private_data; in papr_vpd_handle_release() local
428 vpd_blob_free(blob); in papr_vpd_handle_release()
435 const struct vpd_blob *blob = file->private_data; in papr_vpd_handle_seek() local
437 return fixed_size_llseek(file, off, whence, blob->len); in papr_vpd_handle_seek()
467 const struct vpd_blob *blob; in papr_vpd_create_handle() local
478 blob = papr_vpd_retrieve(&klc); in papr_vpd_create_handle()
479 if (IS_ERR(blob)) in papr_vpd_create_handle()
480 return PTR_ERR(blob); in papr_vpd_create_handle()
489 (void *)blob, O_RDONLY); in papr_vpd_create_handle()
501 vpd_blob_free(blob); in papr_vpd_create_handle()