]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/parisc/kernel/firmware.c
parisc: Fix crash when calling PDC_PAT_MEM PDT firmware function
[karo-tx-linux.git] / arch / parisc / kernel / firmware.c
index 98190252c12fdc801ca8f7f328733727577f48f2..526ed90ca56f4a1b0c6e5339ddca4837d4bc0fbb 100644 (file)
@@ -1481,12 +1481,19 @@ int pdc_pat_mem_read_pd_pdt(struct pdc_pat_mem_read_pd_retinfo *pret,
                unsigned long offset)
 {
        int retval;
-       unsigned long flags;
+       unsigned long flags, entries;
 
        spin_lock_irqsave(&pdc_lock, flags);
        retval = mem_pdc_call(PDC_PAT_MEM, PDC_PAT_MEM_PD_READ,
-               __pa(&pret), __pa(pdt_entries_ptr),
+               __pa(&pdc_result), __pa(pdt_entries_ptr),
                count, offset);
+
+       if (retval == PDC_OK) {
+               entries = min(pdc_result[0], count);
+               pret->actual_count_bytes = entries;
+               pret->pdt_entries = entries / sizeof(unsigned long);
+       }
+
        spin_unlock_irqrestore(&pdc_lock, flags);
 
        return retval;